前言
传统 LNMP 环境部署依赖手动编译 Nginx、PHP、MySQL,环境配置繁琐、迁移困难、版本不一致。本文分为两大核心实战:通过 Dockerfile 编写自定义基础镜像、Nginx 编译镜像,再基于自定义镜像一键部署Docker 容器化 LNMP 环境,最终搭建 WordPress 博客系统,实现数据持久化、环境标准化、一键迁移,适配 CentOS、银河麒麟 V10 系统。
一、Dockerfile 构建自定义镜像实战
Dockerfile 是用于构建 Docker 镜像的脚本文件,通过指令定义镜像基础环境、依赖、编译安装、启动命令,实现环境可复用、可批量部署。
1. 编写 CentOS7 基础镜像 Dockerfile(base 镜像)
作用:统一基础系统环境、yum 源、时区、必备依赖,后续 Nginx、PHP 镜像基于此构建,避免重复配置。
# 基础镜像:CentOS7.8
FROM centos:7.8.2003
# 镜像作者信息
MAINTAINER xxx@aa.com
# 1. 更换阿里云+163国内yum源,安装epel源
RUN yum install wget epel-release -y \\
&& mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak \\
&& wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/Centos-7.repo \\
&& wget -P /etc/yum.repos.d/ http://mirrors.163.com/.help/CentOS7-Base-163.repo \\
&& yum clean all && yum makecache
# 2. 安装系统必备依赖:编译工具、时间同步、定时任务
RUN yum install -y wget gcc gcc-c++ glibc make autoconf openssl openssl-devel ntpdata crontabs
# 3. 设置系统时区为上海(解决容器时间不对问题)
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
构建镜像命令
docker build -t centos:v1 .
2. 编写自定义编译版 Nginx 镜像 Dockerfile
基于上面构建的centos:v1基础镜像,源码编译安装 Nginx1.19.2,自定义开启 SSL、反向代理、防盗链等模块,适配 LNMP 环境。
# 基于自定义CentOS7基础镜像
FROM centos:v1
MAINTAINER xxx@zz.com
# 1. 创建nginx运行用户www,禁止登录系统
RUN useradd -M -s /sbin/nologin www
# 2. 上传Nginx源码包到镜像内
ADD nginx-1.19.2.tar.gz /usr/local/src
# 3. 安装Nginx编译依赖
RUN yum install openssl openssl-devel libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel libxml2 libxml2-devel libxslt-devel
# 4. 进入源码目录
WORKDIR /usr/local/src/nginx-1.19.2
# 5. 编译+安装Nginx,开启SSL、反向代理、状态监控等模块
RUN ./configure –user=www –group=www –prefix=/usr/local/nginx \\
–with-file-aio –with-http_ssl_module –with-http_realip_module \\
–with-http_addition_module –with-http_xslt_module –with-http_image_filter_module \\
–with-http_geoip_module –with-http_sub_module –with-http_dav_module \\
–with-http_flv_module –with-http_mp4_module –with-http_gunzip_module \\
–with-http_gzip_static_module –with-http_auth_request_module \\
–with-http_random_index_module –with-http_secure_link_module \\
–with-http_degradation_module –with-http_stub_status_module \\
&& make && make install
# 6. 上传自定义Nginx配置文件
COPY nginx.conf /usr/local/nginx/conf/nginx.conf
COPY fastcgi_params /usr/local/nginx/conf/fastcgi_params
# 创建虚拟主机配置目录
RUN mkdir /usr/local/nginx/conf/conf.d
COPY www.conf /usr/local/nginx/conf/conf.d/www.conf
# 7. 暴露80端口
EXPOSE 80
# 8. 容器前台运行Nginx(避免容器启动后退出)
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]
构建 Nginx 镜像命令
docker build -t nginx1.19:v1 .
二、Docker 容器化部署 LNMP+WordPress 实战
通过容器互联、数据卷挂载,搭建 MySQL+Nginx+PHP 的 LNMP 架构,部署 WordPress 博客系统,实现数据持久化、外网访问。
环境说明
- MySQL:5.7 版本,持久化数据到宿主机
- Nginx:1.19.2 自定义编译镜像,反向代理、静态资源解析
- PHP:7.4 版本,解析 PHP 动态脚本
- WordPress:中文最新版博客系统
步骤 1:启动 MySQL 容器(数据库)
挂载宿主机目录实现数据持久化,端口映射 3306:
docker run -d –name mysql \\
-v /docker/db:/var/lib/mysql \\
-p 3306:3306 \\
registry.cn-beijing.aliyuncs.com/iivey/mysql5.7:v1
步骤 2:启动 PHP 容器(动态脚本解析)
通过–link关联 MySQL 容器,挂载网站代码目录:
docker run -d –name php \\
-v /docker/www:/usr/local/nginx/html \\
–link=mysql:mysql \\
registry.cn-beijing.aliyuncs.com/iivey/php7.4:v1
–link=mysql:mysql:连接 mysql 容器,别名 mysql,PHP 内直接使用mysql作为数据库主机地址
步骤 3:启动 Nginx 容器(Web 服务、反向代理)
挂载网站代码、Nginx 配置、日志目录,关联 PHP 容器:
docker run -d –name nginx \\
-p 8000:80 \\
-v /docker/www:/usr/local/nginx/html \\
-v /docker/nginxconf:/usr/local/nginx/conf/conf.d \\
-v /docker/nginxlog:/usr/local/nginx/logs \\
–link=php:php \\
registry.cn-beijing.aliyuncs.com/iivey/nginx1.19:v1
步骤 4:部署 WordPress 博客系统
下载 WordPress 中文安装包,上传至服务器
# 下载中文最新版
wget https://cn.wordpress.org/latest-zh_CN.tar.gz
# 解压到网站根目录
tar -zxvf latest-zh_CN.tar.gz -C /docker/www
浏览器访问安装界面访问地址:http://服务器IP:8000/wordpress,出现 WordPress 数据库配置页面
步骤 5:完成 WordPress 安装
按页面提示填写数据库信息:




