赞
踩
计划通过自定义网络模式,创建一个172.18.0.0/16网段
nginx:172.18.0.2:80
php:172.18.0.3:9000
mysql:172.18.0.4:3306
准备好nginx的安装包
准备nginx的网页目录和wordpress网站目录以及nginx.conf文件




-
- FROM centos:7
- #基于centos7镜像
- MAINTAINER nginx on centos7 by lxy-20240125
- #注释信息
- ADD nginx-1.24.0.tar.gz /opt/
- #将nginx安装包传输到镜像中
- RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make && \
- useradd -M -s /sbin/nologin nginx && \
- cd /opt/nginx-1.24.0 && \
- ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && \
- make && make install
- #下载编译安装nginx的依赖环境,以及创建nginx用户,进入nginx目录中,完成配置--编译--安装
- ENV PATH=$PATH:/usr/local/nginx/sbin/
- #创建镜像的环境变量
- ADD nginx.conf /usr/local/nginx/conf/nginx.conf
- #将配置文件传输的镜像中,覆盖原有的nginx.conf文件
- RUN chmod 777 -R /usr/local/nginx/html/
- #修改权限
- EXPOSE 80
- #暴雷80端口
- CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]
- #设置启动命令



准备好mysql的安装包
准备好mysql的配置文件my.cnf

-
- [root@localhost mysql]#cat my.cnf
- [client]
- port = 3306
- socket = /usr/local/mysql/mysql.sock
-
- [mysql]
- port = 3306
- socket = /usr/local/mysql/mysql.sock
-
- [mysqld]
- user = mysql
- basedir = /usr/local/mysql
- datadir = /usr/local/mysql/data
- port = 3306
- character_set_server=utf8
- pid-file = /usr/local/mysql/mysqld.pid
- socket = /usr/local/mysql/mysql.sock
- server-id = 1
-
- sql_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


编写构建mysql应用镜像的Dockerfile文件
- FROM centos:7
- #基于centos7镜像
- MAINTAINER this is mysql image <hjl>
- #注释信息
- ADD mysql-boost-5.7.44.tar.gz /opt/
- COPY my.cnf /etc/my.cnf
- #将安装包和配置文件传输到镜像中
- RUN yum -y install make gcc gcc-c++ ncurses ncurses-devel bison cmake openssl-devel && \
- yum clean all && \
- cd /opt/mysql-5.7.44/ && \
- 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_EXTRA_CHARSETS=all \
- -DWITH_INNOBASE_STORAGE_ENGINE=1 \
- -DMYSQL_DATADIR=/usr/local/mysql/data \
- -DWITH_BOOST=boost \
- -DWITH_SYSTEMD=1 && make -j 2 && make install && \
- useradd -M -s /sbin/nologin mysql && \
- chown mysql:mysql /etc/my.cnf && \
- chown -R mysql:mysql /usr/local/mysql/ &&\
- /usr/local/mysql/bin/mysqld \
- --initialize-insecure \
- --user=mysql \
- --basedir=/usr/local/mysql \
- --datadir=/usr/local/mysql/data
- #依次安装依赖环境,注意新版本必须要openssl环境,注意提示报错查看
- #清理yum缓存
- #进入mysql解压包中,完成cmake--编译--安装
- #创建一个mysql用户
- #修改配置文件的权限
- #修改安装目录的权限
- #直接用命令启动mysql
- ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
- #配置环境变量
- EXPOSE 3306
- #暴露端口
- CMD ["/usr/local/mysql/bin/mysqld"]
- #设置默认启动命令



-
- docker build -t mysql:centos .
- ##在/docker/mysql/目录中使用该命令


准备好php的安装包
准备好php的三个配置文件

-
- [root@localhost php]#ls
- Dockerfile php-7.1.10.tar.bz2 php-fpm.conf php.ini www.conf
-
- [root@localhost php]#vim php.ini
- 939 date.timezone = Asia/Shanghai ##修改时区
- 1170 mysqli.default_socket = /usr/local/mysql/mysql.sock
-
- [root@localhost php]#vim php-fpm.conf
- 17 pid = run/php-fpm.pid
-
-
- [root@localhost php]#vim www.conf
- 23 user=nginx
- 24 group=nginx
- 36 listen=172.18.0.3:9000
- 62 listen.allowed_clients = 172.18.0.2






- FROM centos:7
- #基础镜像为centos7
- MAINTAINER this is php image <hjl:20240130>
- #注释信息
- ADD php-7.1.10.tar.bz2 /opt/
- #将文件传输到镜像中
- RUN yum -y install 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-develgcc gcc-c++ make pcre-devel && \
- yum clean all && \
- cd /opt/php-7.1.10 && \
- ./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 2&& make install && \
- useradd -M -s /sbin/nologin nginx
- #通过RUN依次下载php的依赖环境,清理yum缓存
- #进入文件,配置--编译--安装
- #创建nginx用户
- COPY php.ini /usr/local/php/lib/php.ini
- COPY php-fpm.conf /usr/local/php/etc/php-fpm.conf
- COPY www.conf /usr/local/php/etc/php-fpm.d/www.conf
- #将三个配置文件传输到镜像中
- EXPOSE 9000
- #暴露9000端口
- CMD [ "/usr/local/php/sbin/php-fpm", "-F" ]
- #启动




- ##创建一个自定义网络,网段为172.18.0.0/16,名称为mynetwork
- [root@localhost nginx]#docker network create --subnet 172.18.0.0/16 --opt "com.docker.network.bridge.name"="docker1" mynetwork
- 8a17084b63b494ed4820087a0e984d0bd74d7d7d1510f09854a36949fd90a127
-
- ##创建nginx容器,-v 将宿主机准备的网页目录挂载到容器中,并做好端口映射到宿主机的80端口,设置网络模式为自定义的mynetwork,并指定ip为172.18.0.2
- [root@localhost nginx]#docker run -d --name nginx -v /opt/nginx/html/:/usr/local/nginx/html -p 80:80 --network mynetwork --ip 172.18.0.2 nginx:centos
- 3745efed074341d66197959c23eda52d7d38de29ce647658a3b49bf1cc853804
-
- ##创建mysql容器,-v 创建数据卷,设置网络模式为自定义的mynetwork,并指定ip为172.18.0.4
- [root@localhost nginx]#docker run -d --name mysql --privileged -v /usr/local/mysql --network mynetwork --ip 172.18.0.4 mysql:centos
- f828251ec4adefe1705ab9fbb9c8b4fb73c857fd4bca462f6a6cde37ab3bac0d
-
- ##登录进入mysql容器中,完成初始化
- [root@localhost nginx]#docker exec -it mysql bash
- [root@f828251ec4ad /]# mysqladmin -uroot -p password "abc123"
- ##登录mysql
- [root@f828251ec4ad /]# mysql -uroot -pabc123
-
- ##创建WordPress库
- mysql> create database wordpress;
- Query OK, 1 row affected (0.00 sec)
- ##做授权
- mysql> grant all on *.* to 'wordpress'@'172.18.0.%' identified by 'wordpress';
- Query OK, 0 rows affected, 1 warning (0.00 sec)
- ##刷新权限
- mysql> flush privileges;
-
- ##创建php容器,--volumes-from 将mysql和nginx的数据卷都挂载到php容器中,并做好端口映射到宿主机的9000端口,设置网络模式为自定义的mynetwork,并指定ip为172.18.0.3
- [root@localhost nginx]#docker run --name php -d -p 9000:9000 --volumes-from mysql --volumes-from nginx --net mynetwork --ip 172.18.0.3 php:centos







Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。