Docker构建Nginx、PHP、MySQL及WordPress部署及解释

目录

一、构建Nginx

二、构建PHP

三、构建MySQL

四、启动容器

五、测试

六、部署网站


一、构建Nginx

创建目录并进入目录

bash

复制

mkdir /opt/nginx

cd /opt/nginx

mkdir /opt/nginx:在 /opt 目录下创建一个名为 nginx 的目录。

cd /opt/nginx:进入 /opt/nginx 目录。

编写Dockerfile

dockerfile

复制

FROM centos:7

RUN rm -rf /etc/yum.repos.d/*

RUN curl -o /etc/yum.repos.d/CentOS-Base.repo  https://mirrors.aliyun.com/repo/Centos-7.repo

RUN yum clean all

RUN yum -y install net-tools pcre-devel zlib-devel zlib gcc* make

ADD nginx-1.19.5.tar.gz /root

WORKDIR /root/nginx-1.19.5

RUN ./configure --prefix=/usr/local/nginx && make && make install

ADD nginx.conf /usr/local/nginx/conf/nginx.conf

EXPOSE 80

EXPOSE 443

WORKDIR /root/nginx

ADD run.sh /run.sh

RUN chmod 775 /run.sh

CMD ["/run.sh"]

FROM centos:7:基于 centos:7 镜像构建。

RUN rm -rf /etc/yum.repos.d/*:删除 /etc/yum.repos.d/ 目录下的所有文件。

RUN curl -o /etc/yum.repos.d/CentOS-Base.repo  https://mirrors.aliyun.com/repo/Centos-7.repo:从阿里云下载 CentOS 7 的 yum 源配置文件。

RUN yum clean all:清理 yum 缓存。

RUN yum -y install net-tools pcre-devel zlib-devel zlib gcc* make:安装编译 Nginx 所需的依赖包。

ADD nginx-1.19.5.tar.gz /root:将本地的 nginx-1.19.5.tar.gz 文件添加到容器的 /root 目录并解压。

WORKDIR /root/nginx-1.19.5:设置工作目录为 /root/nginx-1.19.5。

RUN ./configure --prefix=/usr/local/nginx && make && make install:编译并安装 Nginx。

ADD nginx.conf /usr/local/nginx/conf/nginx.conf:将本地的 nginx.conf 配置文件添加到容器的 /usr/local/nginx/conf/ 目录。

EXPOSE 80 和 EXPOSE 443:暴露容器的 80 和 443 端口。

ADD run.sh /run.sh:将本地的 run.sh 脚本添加到容器的根目录。

RUN chmod 775 /run.sh:赋予 run.sh 脚本执行权限。

CMD ["/run.sh"]:设置容器启动时执行的命令为 /run.sh。

编写run.sh脚本

bash

复制

#!/bin/bash

/usr/local/nginx/sbin/nginx

#!/bin/bash:指定脚本使用 Bash 解释器。

/usr/local/nginx/sbin/nginx:启动 Nginx。

生成镜像

bash

复制

docker build -t mynginx .

docker build -t mynginx .:根据当前目录下的 Dockerfile 构建一个名为 mynginx 的镜像。

二、构建PHP

创建目录并进入目录

bash

复制

mkdir /opt/php

cd /opt/php

mkdir /opt/php:在 /opt 目录下创建一个名为 php 的目录。

cd /opt/php:进入 /opt/php 目录。

编写Dockerfile

dockerfile

复制

FROM centos:7

MAINTAINER jacker

RUN rm -rf /etc/yum.repos.d/*

RUN curl -o /etc/yum.repos.d/CentOS-Base.repo  https://mirrors.aliyun.com/repo/Centos-7.repo

RUN curl -o /etc/yum.repos.d/epel.repo  https://mirrors.aliyun.com/repo/epel-7.repo

RUN yum clean all

RUN yum install -y wget net-tools php php-fpm php-common php-devel php-mysql

RUN sed -i 's/127.0.0.1/0.0.0.0/g' /etc/php-fpm.d/www.conf

RUN sed -i 's/listen.allowed_clients/;listen.allowed_clients/g' /etc/php-fpm.d/www.conf

RUN sed -i 's/;default_charset/default_charset/g' /etc/php.ini

EXPOSE 9000

CMD ["php-fpm"]

FROM centos:7:基于 centos:7 镜像构建。

MAINTAINER jacker:设置镜像的作者信息。

RUN rm -rf /etc/yum.repos.d/*:删除 /etc/yum.repos.d/ 目录下的所有文件。

RUN curl -o /etc/yum.repos.d/CentOS-Base.repo  https://mirrors.aliyun.com/repo/Centos-7.repo:从阿里云下载 CentOS 7 的 yum 源配置文件。

RUN curl -o /etc/yum.repos.d/epel.repo  https://mirrors.aliyun.com/repo/epel-7.repo:从阿里云下载 EPEL 的 yum 源配置文件。

RUN yum clean all:清理 yum 缓存。

RUN yum install -y wget net-tools php php-fpm php-common php-devel php-mysql:安装 PHP 及其相关扩展。

RUN sed -i 's/127.0.0.1/0.0.0.0/g' /etc/php-fpm.d/www.conf:将 PHP-FPM 配置文件中的监听地址从 127.0.0.1 改为 0.0.0.0,允许外部访问。

RUN sed -i 's/listen.allowed_clients/;listen.allowed_clients/g' /etc/php-fpm.d/www.conf:注释掉 listen.allowed_clients 配置项,允许所有客户端连接。

RUN sed -i 's/;default_charset/default_charset/g' /etc/php.ini:启用 PHP 的默认字符集配置。

EXPOSE 9000:暴露容器的 9000 端口。

CMD ["php-fpm"]:设置容器启动时执行的命令为 php-fpm。

生成镜像

bash

复制

docker build -t myphp .

docker build -t myphp .:根据当前目录下的 Dockerfile 构建一个名为 myphp 的镜像。

三、构建MySQL

创建目录并进入目录

bash

复制

mkdir /opt/mysql

cd /opt/mysql

mkdir /opt/mysql:在 /opt 目录下创建一个名为 mysql 的目录。

cd /opt/mysql:进入 /opt/mysql 目录。

编写Dockerfile

dockerfile

复制

FROM centos:7

RUN rm -rf /etc/yum.repos.d/*

RUN curl -o /etc/yum.repos.d/CentOS-Base.repo  https://mirrors.aliyun.com/repo/Centos-7.repo

RUN yum clean all

RUN yum -y install mariadb mariadb-server

RUN chown -R mysql:mysql /var/lib/mysql

ADD /

RUN chmod 775 /

RUN /

EXPOSE 3306

CMD ["mysqld_safe"]

FROM centos:7:基于 centos:7 镜像构建。

RUN rm -rf /etc/yum.repos.d/*:删除 /etc/yum.repos.d/ 目录下的所有文件。

RUN curl -o /etc/yum.repos.d/CentOS-Base.repo  https://mirrors.aliyun.com/repo/Centos-7.repo:从阿里云下载 CentOS 7 的 yum 源配置文件。

RUN yum clean all:清理 yum 缓存。

RUN yum -y install mariadb mariadb-server:安装 MariaDB(MySQL 的一个分支)。

RUN chown -R mysql:mysql /var/lib/mysql:将 /var/lib/mysql 目录的所有权更改为 mysql 用户和组。

ADD /:将本地的 脚本添加到容器的根目录。

RUN chmod 775 /:赋予 脚本执行权限。

RUN /:执行 脚本。

EXPOSE 3306:暴露容器的 3306 端口。

CMD ["mysqld_safe"]:设置容器启动时执行的命令为 mysqld_safe。

编写脚本

bash

复制

#!/bin/bash

mysql_install_db --user=mysql

sleep 3

mysqld_safe &

sleep 3

mysqladmin -u "root" password "123456"

mysql -uroot -p123456 -e "grant all privileges on *.* to 'root'@'%' identified by '123456';"

mysql -uroot -p123456 -e "grant all privileges on *.* to 'root'@'localhost' identified by '123456';"

mysql -uroot -p123456 -e "flush privileges;"

mysql_install_db --user=mysql:初始化 MySQL 数据库。

sleep 3:等待 3 秒。

mysqld_safe &:启动 MySQL 服务。

mysqladmin -u "root" password "123456":设置 MySQL 的 root 用户密码为 123456。

mysql -uroot -p123456 -e "grant all privileges on *.* to 'root'@'%' identified by '123456';":授予 root 用户从任何主机访问数据库的权限。

mysql -uroot -p123456 -e "grant all privileges on *.* to 'root'@'localhost' identified by '123456';":授予 root 用户从本地访问数据库的权限。

mysql -uroot -p123456 -e "flush privileges;":刷新权限。

生成镜像

bash

复制

docker build -t mymysql .

docker build -t mymysql .:根据当前目录下的 Dockerfile 构建一个名为 mymysql 的镜像。

四、启动容器

创建Docker网络

bash

复制

docker network create my_net

docker network create my_net:创建一个名为 my_net 的 Docker 网络。

启动PHP容器

bash

复制

docker run -id --net=my_net -v /web:/web --name php01 myphp

docker run -id --net=my_net -v /web:/web --name php01 myphp:启动一个名为 php01 的容器,使用 my_net 网络,并将本地的 /web 目录挂载到容器的 /web 目录。

启动Nginx容器

bash

复制

docker run -id --net=my_net

-v /web:/web

-v /opt/nginx/nginx.conf:/usr/local/nginx/conf/nginx.conf

-p 80:80 \

--name nginx01 mynginx

docker run -id --net=my_net -v /web:/web -v /opt/nginx/nginx.conf:/usr/local/nginx/conf/nginx.conf -p 80:80 --name nginx01 mynginx:启动一个名为 nginx01 的容器,使用 my_net 网络,挂载本地目录和配置文件,并将容器的 80 端口映射到主机的 80 端口。

启动MySQL容器

bash

复制

docker run -p 3306:3306 --name mysql01 -v /opt/mysql/my.cnf:/etc/my.cnf --net=my_net -d mymysql

docker run -p 3306:3306 --name mysql01 -v /opt/mysql/my.cnf:/etc/my.cnf --net=my_net -d mymysql:启动一个名为 mysql01 的容器,使用 my_net 网络,挂载本地配置文件,并将容器的 3306 端口映射到主机的 3306 端口。

五、测试

创建测试PHP文件

bash

复制

cd /web

vim aaa.php

cd /web:进入 /web 目录。

vim aaa.php:创建并编辑 aaa.php 文件,内容为 ,用于显示 PHP 信息。

创建测试数据库连接文件

bash

复制

cat bbb.php

cat bbb.php:查看 bbb.php 文件内容,内容为 ,用于测试 MySQL 连接。

六、部署网站

解压WordPress并复制到/web目录

bash

复制

tar zxvf wordpress-4.9.1-zh_CN.tar.gz

cp -rf wordpress/* /web/

chmod -R 777 /web/

tar zxvf wordpress-4.9.1-zh_CN.tar.gz:解压 WordPress 压缩包。

cp -rf wordpress/* /web/:将解压后的文件复制到 /web 目录。

chmod -R 777 /web/:赋予 /web 目录及其子文件所有权限。

进入MySQL容器并创建数据库

bash

复制

docker exec -it mysql01 /bin/bash

mysql -uroot -p123456

MariaDB [(none)]> create database wordpress;

docker exec -it mysql01 /bin/bash:进入 mysql01 容器的 Bash 终端。

mysql -uroot -p123456:使用 root 用户登录 MySQL。

MariaDB [(none)]> create database wordpress;:创建一个名为 wordpress 的数据库
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值