一、部署 Nginx 镜像
1. 建立工作目录
mkdir /opt/lnmp/nginx -pcd /opt/lnmp/nginx#上传 nginx 安装包 nginx-1.12.0.tar.gz#上传 wordpress 服务包 wordpress-4.9.4-zh_CN.tar.gz

mkdir /opt/lnmp/nginx/htmltar zxvf wordpress-4.9.4-zh_CN.tar.gz -C /opt/lnmp/nginx/html

2. 编写 Dockerfile 脚本
vim DockerfileFROM centos:7MAINTAINER this is nginx image <zy>RUN yum -y updateRUN yum -y install pcre-devel zlib-devel gcc gcc-c++ makeRUN useradd -M -s /sbin/nologin nginxADD nginx-1.12.0.tar.gz /usr/local/src/WORKDIR /usr/local/src/nginx-1.12.0RUN ./configure \--prefix=/usr/local/nginx \--user=nginx \--group=nginx \--with-http_stub_status_module && make -j4 && make installENV PATH /usr/local/nginx/sbin:$PATHADD nginx.conf /usr/local/nginx/conf/#ADD wordpress-4.9.4-zh_CN.tar.gz /usr/local/nginx/html/RUN chmod 777 -R /usr/local/nginx/html/EXPOSE 80EXPOSE 443ENTRYPOINT [ "/usr/local/nginx/sbin/nginx", "-g", "daemon off;" ]

3. 准备 nginx.conf 配置文件
vim nginx.conf#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024;}http {include mime.types;default_type application/octet-stream;#log_format main '$remote_addr - $remote_user [$time_local] "$request" '# '$status $body_bytes_sent "$http_referer" '# '"$http_user_agent" "$http_x_forwarded_for"';#access_log logs/access.log main;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;#gzip on;server {listen 80;server_name localhost;charset utf-8;#access_log logs/host.access.log main;location / {root html;index index.html index.php;}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {# proxy_pass http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000#location ~ \.php$ {root html;fastcgi_pass 172.18.0.30:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;include fastcgi_params;}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {# deny all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {# listen 8000;# listen somename:8080;# server_name somename alias another.alias;# location / {# root html;# index index.html index.htm;# }#}# HTTPS server##server {# listen 443 ssl;# server_name localhost;# ssl_certificate cert.pem;# ssl_certificate_key cert.key;# ssl_session_cache shared:SSL:1m;# ssl_session_timeout 5m;# ssl_ciphers HIGH:!aNULL:!MD5;# ssl_prefer_server_ciphers on;# location / {# root html;# index index.html index.htm;# }#}}

二、部署 Mysql 镜像
1. 建立工作目录
mkdir /opt/lnmp/mysqldcd /opt/lnmp/mysqld#上传 mysql-boost-5.7.20.tar.gz 到 /opt/mysqld 目录中

2. 编写 Dockerfile
vim DockerfileFROM centos:7MAINTAINER this is mysql image <zy>RUN yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake makeADD mysql-boost-5.7.20.tar.gz /usr/local/src/WORKDIR /usr/local/src/mysql-5.7.20/RUN cmake \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \-DSYSCONFDIR=/etc \-DSYSTEMD_PID_DIR=/usr/local/mysql \-DDEFAULT_CHARSET=utf8 \-DDEFAULT_COLLATION=utf8_general_ci \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_ARCHIVE_STORAGE_ENGINE=1 \-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \-DMYSQL_DATADIR=/usr/local/mysql/data \-DWITH_BOOST=boost \-DWITH_SYSTEMD=1 && make -j4 && make installADD my.cnf /etc/ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATHRUN useradd -M -s /sbin/nologin mysqlRUN chown mysql:mysql /etc/my.cnfRUN chown -R mysql:mysql /usr/local/mysql/RUN /usr/local/mysql/bin/mysqld \--initialize-insecure \--user=mysql \--basedir=/usr/local/mysql \--datadir=/usr/local/mysql/dataEXPOSE 3306CMD ["/usr/local/mysql/bin/mysqld"]

3. 准备 my.cnf 文件
vim my.cnf[client]port = 3306default-character-set=utf8socket = /usr/local/mysql/mysql.sock[mysql]port = 3306default-character-set=utf8socket = /usr/local/mysql/mysql.sock[mysqld]user = mysqlbasedir = /usr/local/mysqldatadir = /usr/local/mysql/dataport = 3306character_set_server=utf8pid-file = /usr/local/mysql/mysqld.pidsocket = /usr/local/mysql/mysql.sockserver-id = 1sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

三、部署 php 镜像
1. 建立工作目录
mkdir /opt/lnmp/phpcd /opt/lnmp/php#上传 php-7.1.10.tar.bz2 到 /opt/php 目录中

2. 编写 Dockerfile
vim Dockerfile FROM centos:7MAINTAINER this is php image <zy>RUN yum install -y gd \libjpeg libjpeg-devel \libpng libpng-devel \freetype freetype-devel \libxml2 libxml2-devel \zlib zlib-devel \curl curl-devel \openssl openssl-devel \gcc gcc-c++ make pcre-devel;useradd -M -s /sbin/nologin nginxADD php-7.1.10.tar.bz2 /usr/local/src/WORKDIR /usr/local/src/php-7.1.10RUN ./configure \--prefix=/usr/local/php \--with-mysql-sock=/usr/local/mysql/mysql.sock \--with-mysqli \--with-zlib \--with-curl \--with-gd \--with-jpeg-dir \--with-png-dir \--with-freetype-dir \--with-openssl \--enable-fpm \--enable-mbstring \--enable-xml \--enable-session \--enable-ftp \--enable-pdo \--enable-tokenizer \--enable-zip ; make -j 4 ; make installENV PATH /usr/local/php/bin:/usr/local/php/sbin:$PATHADD php.ini /usr/local/php/lib/ADD php-fpm.conf /usr/local/php/etc/ADD www.conf /usr/local/php/etc/php-fpm.d/EXPOSE 9000CMD /usr/local/php/sbin/php-fpm -F

3. 准备 php.ini、php-fpm.conf、www.conf 配置文件
vim php.ini#939行,取消注释,修改date.timezone = Asia/Shanghai#1170行,修改mysqli.default_socket = /usr/local/mysql/mysql.sock#######vim php-fpm.conf#17行,删除注释符号“;”pid = run/php-fpm.pid#######vim www.conf#23、24行,修改用户和组user = nginxgroup = nginx#36行,修改监听IP和端口为容器IP:9000端口listen = 172.18.0.30:9000

四、准备 docker-compose.yml 文件
1. 配置 docker-compose.yml 文件
cd /opt/lnmpvim docker-compose.ymlversion: '3'services:nginx:container_name: nginxhostname: nginxbuild:context: ./nginxdockerfile: Dockerfileports:- 1233:80- 1234:443networks:lnmp:ipv4_address: 172.18.0.10volumes:- ./nginx/html:/usr/local/nginx/htmlmysql:container_name: mysqlhostname: mysqlbuild:context: ./mysqlddockerfile: Dockerfilenetworks:lnmp:ipv4_address: 172.18.0.20volumes:- t_data:/usr/local/mysqlprivileged: truephp:container_name: phphostname: phpbuild:context: ./phpdockerfile: Dockerfileports:- 9000:9000networks:lnmp:ipv4_address: 172.18.0.30volumes:- t_data:/usr/local/mysql- ./nginx/html:/usr/local/nginx/htmlnetworks:lnmp:driver: bridgeipam:config:- subnet: 172.18.0.0/16volumes:t_data:

2. 运行yml文件
docker-compose -f docker-compose.yml up -d

五、启动 wordpress 服务
1. mysql 授权
docker exec -it mysql /bin/bashmysql -u root -p
Enter password:
#初始密码为空
mysql> create database wordpress;
Query OK, 1 row affected (0.00 sec)mysql> grant all privileges on wordpress.* to 'wordpress'@'%' identified by 'abc123';
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> grant all privileges on *.* to 'root'@'%' identified by 'abc123';
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

2. 浏览器访问测试
访问 http://172.168.1.11:1233/wordpress/index.php



