使用Docker构建LNMP环境并运行Wordpress网站平台
1.基于Dockerfile构建LNMP镜像
1.项目环境
(1)公司在实际的生产环境中,需要使用Docker技术在一台主机上创建LNMP服务,并运行Wordpress网站平台。然后对此服务进行相关的性能调优和管理工作。
(2)环境描述
名称 | 备注 |
---|---|
主要软件 | Docker、Nginx、MySQL、PHP |
操作系统 | CentOS Linux release 7.9.2009 (Core) |
宿主机的IP地址 | 192.168.80.20 |
Nginx的IP地址 | 172.18.0.10 |
MySql的IP地址 | 172.18.0.20 |
PHP的IP地址 | 172.18.0.30 |
2.任务需求
(1)使用Docker构建LNMP环境并运行Wordpress网站平台。
(2)限制Nginx容器最多使用500Mb的内存和1G的Swap。
(3)限制Mysql容器写/dev/sda的速率为10MB/s。
(4)将所有容器进行快照,然后将Docker镜像打包成tar包备份到本地。
1.1 基于Dockerfile构建nginx镜像
创建nginx、mysql和php目录;
cd /opt/lnmp
mkdir nginx mysql php
cd /opt/nginx
rz -E
#nginx-1.22.0.tar.gz wordpress-4.9.4-zh_CN.tar.gz
删除系统中现有的所有容器和镜像;
docker rm -f $(docker ps -aq)
docker ps -a
docker images
docker rmi -f 镜像ID号
docker images
制作nginx服务的Dockerfile文件;
vim /opt/lnmp/nginx/Dockerfile
FROM centos:7
MAINTAINER this is nginx image <clr 2023-07-24>
ADD nginx-1.22.0.tar.gz /usr/local/
RUN yum install -y pcre-devel zlib-devel openssl-devel gcc gcc-c++ make && \
useradd -M -s /sbin/nologin nginx && \
cd /usr/local/nginx-1.22.0 && \
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make -j2 && make install
#COPY nginx.conf /usr/local/nginx/conf/nginx.conf
EXPOSE 80
#EXPOSE 443
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]
docker build -t nginx:centos7 . #在当前目录中,创建nginx:centos7镜像
基于新构建的nginx镜像,创建容器,并随机映射端口;
docker images
docker run -d -P nginx:centos7
docker ps -a
浏览器访问nginx服务的web页面测试;
http://192.168.80.20:32770
1.1.1 修改/usr/local/nginx/conf/nginx.conf文件
将容器中nginx服务的nginx.conf文件下载到宿主机的/opt/lnmp/nginx/目录中;
docker cp c74be83dab04:/usr/local/nginx/conf/nginx.conf /opt/lnmp/nginx/
修改宿主机中的nginx.conf文件;
vim /opt/lnmp/nginx/nginx.conf
------------修改45行---------------------------
index index.php index.html index.htm; #添加index.php模块
-------------65行到71行------------------------
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;
}
创建自定义网段,并命名为mylnmp;
docker network create --subnet=172.18.0.0/16 --opt "com.docker.network.bridge.name"="docker1" mylnmp
docker network list
1.1.2 再次修改nginx服务的Dockerfile文件(多级构建)
vim /opt/lnmp/nginx/Dockerfile
FROM centos:7 AS first
MAINTAINER this is nginx image <clr 2023-07-24>
ADD nginx-1.22.0.tar.gz /usr/local/
RUN yum install -y pcre-devel zlib-devel openssl-devel gcc gcc-c++ make && \
useradd -M -s /sbin/nologin nginx && \
cd /usr/local/nginx-1.22.0 && \
./config