欢迎光临
我们一直在努力

Dockerfile 自定义镜像 + LNMP+WordPress 容器化部署实战

前言

传统 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 安装

按页面提示填写数据库信息:

  • 数据库名:自定义(提前在 MySQL 创建)
  • 数据库用户名:root
  • 数据库密码:MySQL 容器 root 密码
  • 数据库主机:mysql(容器别名,直接填写)
  • 数据表前缀:默认wp_点击现在就开始,后续设置站点名称、管理员账号密码,即可完成安装,搭建个人博客网站。
  • 三、核心技术总结

  • Dockerfile 自定义镜像:实现系统环境标准化,源码编译 Nginx,自定义模块与配置,适配企业生产环境;
  • 容器互联(–link):实现 MySQL、PHP、Nginx 容器通信,无需暴露数据库外网端口;
  • 数据卷挂载:网站代码、数据库、配置文件、日志持久化到宿主机,容器删除数据不丢失;
  • LNMP 容器化优势:部署快、环境隔离、一键迁移、横向扩展,适配国产银河麒麟服务器。
  • 赞(0)
    未经允许不得转载:171主机测评 » Dockerfile 自定义镜像 + LNMP+WordPress 容器化部署实战
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址