环境准备:Aliyun ECS实例一台。
实现效果:一个ECS实例上跑三个容器nginx\tomcat\mysql。实现动静分离,数据库分离的简单架构。
一. 建立nginx容器,提供web服务:
(1) 运行容器
# docker run -p 80:80 -v /usr/local/nginx/html:/usr/share/nginx/html --name nginx -it 53 /bin/bash
--name="nginx-lb": 为容器指定一个名称;
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口;
-v:主机的目录映射到容器的
(2) 进入容器:
# docker exec -it d1 /bin/bash
启动Nginx服务:
# /etc/init.d/nginx start
添加常用工具:
# apt-get update
# apt-get install net-tools
二.建立tomcat容器,提供动态页面Web服务:
(1)运行容器
# docker run -p 8080:8080 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps --name tomcat -it tomcat /bin/bash
(2)进入容器:
启动tomcat服务:
# /usr/local/tomcat/bin/startup.sh
添加常用工具:
# apt-get update
# apt-get install net-tools
三.建立mysql容器,提供数据库服务:
(1)自定义镜像mysql(源码安装):
FROM docker.io/openshift/base-centos7
RUN yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make
RUN yum -y install cmake
RUN groupadd mysql
RUN useradd -r -g mysql -s /bin/false mysql
ADD mysql-5.7.24.tar.gz /root
ADD boost_1_59_0.tar.gz /root/mysql-5.7.24
WORKDIR /root/mysql-5.7.24
RUN cmake . -DWITH_BOOST=boost_1_59_0/ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DMYSQL_DATADIR=/usr/local/mysql/data -DINSTALL_MANDIR=/usr/share/man -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DEXTRA_CHARSETS=all -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1
RUN make && make install
(2)运行容器:
# docker run -p 3306:3306 --name mysql -it 990386cbd5c0 /bin/bash
(3)进入容器:
# cd /usr/local/mysql/
# chown -R mysql.mysql .
修改配置文件
# cat /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
#datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
#symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
#[mysqld_safe]
#log-error=/var/log/mariadb/mariadb.log
#pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
初始化:
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
启动:
./bin/mysqld_safe --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data &
改密码:
./bin/mysqladmin -u root -p'ftlU(iHqd2kR' password 123
配置环境变量:
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
进入mysql授权:
mysql> grant all privileges on *.* to 'root'@'%' identified by '123';