Docker容器部署CMS网站,环境隔离更省心
Docker部署CMS网站,环境隔离更省心
用Docker部署CMS网站,核心好处是环境隔离:每个容器有独立的文件系统、网络和依赖库,不会污染宿主机,迁移时把镜像搬到新机器就能跑。
本文以WordPress为例,从安装Docker到容器启动、数据库连接和效果验证,给出可直接复制执行的命令,零基础用户按顺序操作即可完成。
准备工作:确认系统环境和端口
开始前先确认服务器满足以下条件:
- 操作系统:Ubuntu 20.04/22.04 或 CentOS 7/8,64位
- 内存:建议 2GB 以上,低于 1GB 运行 MySQL 容器容易失败
- 磁盘:至少 10GB 可用空间
- 端口:确保 80、3306 端口未被占用
- 权限:拥有 root 或 sudo 权限
检查端口占用情况:
ss -tlnp | grep -E ':80|:3306'
如果输出为空,说明端口可用;
如果有进程占用,需要先停止对应服务。
安装Docker并配置镜像加速
Ubuntu 系统执行以下命令安装 Docker:
sudo apt update
sudo apt install -y docker.io docker-compose
sudo systemctl enable docker
sudo systemctl start docker
CentOS 系统使用:
sudo yum install -y docker docker-compose
sudo systemctl enable docker
sudo systemctl start docker
安装完成后验证:
docker --version
能输出版本号即安装成功。注意:
如果后续拉取镜像速度慢,
可以配置国内镜像加速地址,
编辑 /etc/docker/daemon.json,
写入 {"registry-mirrors":,
["https:
//docker.mirrors.ustc.edu.cn"]}
然后执行 sudo systemctl restart docker 生效。
启动MySQL容器作为CMS数据库
WordPress 需要数据库支持,先用 Docker 启动一个 MySQL 容器:
docker run -d \
--name cms-mysql \
-e MYSQL_ROOT_PASSWORD=YourRootPass123 \
-e MYSQL_DATABASE=wordpress \
-e MYSQL_USER=wpuser \
-e MYSQL_PASSWORD=YourWpPass123 \
-v /data/mysql:/var/lib/mysql \
--restart unless-stopped \
mysql:5.7
参数说明:
--name cms-mysql:容器名称,方便后续引用-e开头的变量:设置数据库名、用户名和密码,请替换为你自己的强密码-v /data/mysql:/var/lib/mysql:把数据库文件挂载到宿主机,容器删除后数据不丢失--restart unless-stopped:服务器重启后容器自动启动
检查容器运行状态:
docker ps | grep cms-mysql
STATUS 显示 Up 即为正常。
运行WordPress容器并连接数据库
数据库就绪后,启动 WordPress 容器,通过 --link 或自定义网络连接数据库。
这里用自定义网络方式,更清晰:
docker network create cms-net
docker network connect cms-net cms-mysql
docker run -d \
--name cms-wordpress \
-p 80:80 \
-e WORDPRESS_DB_HOST=cms-mysql:3306 \
-e WORDPRESS_DB_USER=wpuser \
-e WORDPRESS_DB_PASSWORD=YourWpPass123 \
-e WORDPRESS_DB_NAME=wordpress \
-v /data/wordpress:/var/www/html \
--network cms-net \
--restart unless-stopped \
wordpress:latest
关键点:WORDPRESS_DB_HOST 填写 cms-mysql:3306,其中 cms-mysql 是数据库容器名,Docker 内部 DNS 会解析到对应容器 IP。
避坑指南:常见报错与处理
部署过程中容易遇到以下问题:
- 容器启动后立即退出:用
docker logs cms-wordpress查看日志,常见原因是数据库连接失败,检查密码和主机名是否正确。 - 数据库容器无法启动:多为内存不足或数据目录权限问题,
docker logs cms-mysql会显示具体错误。若挂载目录权限不对,执行chmod 755 /data/mysql后重试。 - 访问IP显示“Error establishing a database connection”:说明 WordPress 连不上 MySQL,先确认两个容器在同一个网络,再核对环境变量中的密码。
- 端口80被占用:修改
-p 80:80为-p 8080:80,之后通过http://服务器IP:8080访问。 - 数据丢失风险:务必使用
-v挂载宿主机目录,否则删除容器后数据也会消失。
效果验证与后续调整
浏览器访问 http://你的服务器IP,能看到 WordPress 安装向导页面,说明容器部署成功。
按提示填写站点标题、管理员账号即可完成安装。
验证数据库连接是否正常:
docker exec -it cms-mysql mysql -uwpuser -p -e "SHOW DATABASES;"
输入密码后能看到 wordpress 数据库,说明数据卷和用户配置都生效。
后续如果要更换 CMS 或增加 PHP 扩展,只需修改对应容器的镜像或环境变量,重新运行 docker run 命令即可,宿主机环境不受影响。
这就是 Docker 容器部署 CMS 网站时环境隔离带来的最大便利。
常见疑问
问:必须用 MySQL 5.7 吗?
不是,WordPress 也支持 MySQL 8.0 或 MariaDB。
但 5.7 兼容性更稳,新手建议先用 5.7 跑通,再按需升级。
问:容器里的数据怎么备份?
因为已经挂载到宿主机 /data/mysql 和 /data/wordpress,直接备份这两个目录即可,也可以使用 docker exec 导出数据库。
问:能同时跑多个 CMS 网站吗?
可以,为每个站点创建独立网络和容器,映射不同端口(如 80、8080、8081),彼此互不影响。