1.实战架构
宿主机的ip:192.168.223.102
我们使用自定网络进行网络ip地址的创建
nginx的ip地址:172.18.0.10
mysql数据库的ip地址:172.18.0.20
php ip地址:172.18.0.30
2.具体操作
1.先创建一个自己的网络模式
docker network create --subnet=172.18.0.0/16 --opt "com.docker.network.bridge.name"="docker1" mynetwork
2.我们现在部署一个nginx的工作文件夹并将我们需要的安装包以及配置文件以下传输下来
mkdir /opt/nginx
3.编写我们的dockerfile文件
FROM centos:7 AS first
MAINTAINER this is nginx <lzq 20231020>
ADD nginx-1.22.0.tar.gz /opt/
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make && \
useradd -M -s /sbin/nologin nginx && \
cd /opt/nginx-1.22.0 && \
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && \
make && \
make install
FROM centos:7
COPY --from=first /usr/local/nginx/ /usr/local/nginx/
RUN useradd -M -s /sbin/nologin nginx
EXPOSE 80
EXPOSE 443
CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]
4.创建镜像
docker build -t nginx:lnmp .
5.启动我们这个镜像的容器
docker run -d --name nginx -p 80:80 -v /opt/nginx/html/:/usr/local/nginx/html/ -v /opt/nginx/nginx.conf:/usr/local/nginx/conf/nginx.conf --network mynetwork --ip 172.18.0.10 nginx:lnmp
我们进入nginx的这个容器当中,去设置wordpress这个文件的属主属组
6.我们创建一个mysql的工作目录
mdkir /opt/mysql
cd /opt/mysql
7.将我们需要的安装包配置文件什么的传输到这个文件夹下
8.编写我们的dockerfile文件
FROM centos:7 AS first
MAINTAINER this is mysql image <lzq 20231021>
ADD mysql-boost-5.7.20.tar.gz /opt/
RUN yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake make openssl-devel && \
cd /opt/mysql-5.7.20/ && \
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 -j 2 && make install
FROM centos:7
COPY --from=first /usr/local/mysql /usr/local/mysql
ADD my.cnf /etc/my.cnf
ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
RUN 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
EXPOSE 3306
CMD ["/usr/local/mysql/bin/mysqld"]
9.创建镜像
docker build -t mysql:lnmp .
创建容器
docker run -d --name mysql --privileged -v /usr/local/mysql --network mynetwork --ip 172.18.0.20 mysql:lnmp
10.我们进入mysql容器并进行授权
docker exec -it mysql bash
mysql
create database wordpress;
grant all on wordpress.* to 'wordpress'@'172.18.0.%' identified by 'admin123';
grant all on wordpress.* to 'root'@'172.18.0.%' identified by 'admin123';
grant all on wordpress.* to 'wordpress'@'localhost' identified by 'admin123';
11.我们建立php的工作目录
12.并将我们的php所需要的文件放在该文件夹下
13.修改我们的配置文件
vim www.conf
vim php.ini
14.编写dockerfile文件
FROM centos:7 AS first
MAINTAINER this is php image <lzq 20231021>
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-devel && \
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 && \
cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini && \
sed -i -e '939c date.timezone = Asia/Shanghai' -e '1170c mysqli.default_socket = /usr/local/mysql/mysql.sock' /usr/local/php/lib/php.ini && \
cd /usr/local/php/etc/ && \
cp php-fpm.conf.default php-fpm.conf && \
sed -i '17 s/^;//' php-fpm.conf && \
cd /usr/local/php/etc/php-fpm.d/ && \
cp www.conf.default www.conf && \
sed -i -e '23c user = nginx' -e '24c group = nginx' -e '36c listen = 172.18.0.30:9000' -e '62c listen.allowed_clients = 172.18.0.10' www.conf
FROM centos:7
COPY --from=first /usr/local/php/ /usr/local/php/
RUN yum -y install gd \
libjpeg-devel \
libpng-devel \
freetype-devel \
libxml2-devel \
zlib-devel \
curl-devel \
openssl-devel && \
useradd -M -s /sbin/nologin nginx && \
rm -rf /var/cache/yum/*
EXPOSE 9000
CMD ["/usr/local/php/sbin/php-fpm", "-F"]
15.创建镜像
docker build -t php:lnmp .
16.启动我们php的容器
docker run -d --name=php -p 9000:9000 --volumes-from mysql --volumes-from nginx --network mynetwork --ip 172.18.0.30 php:lnmp
17.使用浏览器去测试