侧边栏壁纸
  • 累计撰写 36 篇文章
  • 累计创建 32 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

docker compose 搭建wordpress

Administrator
2026-04-10 / 0 评论 / 0 点赞 / 17 阅读 / 0 字

docker搭建网站优点

1. 环境隔离与“洁癖”友好

优点: Docker 将 WordPress、MariaDB 及其依赖(PHP 扩展等)全部封装在容器内,不会污染你的宿主机系统。

共鸣点: 很多新手手动安装环境时,经常因为 PHP 版本冲突、库文件缺失把服务器搞得乱七八糟,最后只能重装系统。用 Docker,不想要了直接 down 掉删除文件夹,系统依然干干净净。

2. 极其简单的迁移与备份

优点: “代码即基础设施”。你所有的配置都在 docker-compose.yml 里,数据都在挂载的文件夹里。

场景演示: 假设你要换一台服务器(比如从旧服务器搬到你广告里的新服务器),你只需要把 compose 文件和数据文件夹打包带走,在另一台机器上一键启动,网站瞬间复活,完全不需要重新配置环境。

3. 一键版本切换(无痛升级)

优点: 想测试最新的 PHP 8.3 或者最新版 WordPress?

实操: 只需要把 image 标签里的版本号改一下,重新启动容器即可。如果发现不兼容,改回旧版本号又是秒回滚。这在传统环境下几乎是不可能完成的任务(或者非常痛苦)。

4. 配合反向代理(NPM)的神奇体验

优点: 容器化部署让多站点管理变得极其简单。

共鸣点: 配合你准备讲的 Nginx Proxy Manager,你可以通过 Docker 内部网络轻松实现 80/443 端口的复用。一台服务器跑 10 个 WordPress 站点也互不干扰,SSL 证书申请也是点点鼠标的事。

5. 高度的一致性(“在我机器上能跑”)

优点: 你在视频里演示的配置,观众下载过去绝对能跑通。

共鸣点: 传统教程最怕“环境差异”。Docker 抹平了 Ubuntu、CentOS、Debian 之间的系统差异,只要有 Docker,运行结果就是一样的。这能极大减少你评论区的“报错求助”,提高教程质量。

配置文件

docker compose 配置文件

services:
  # --- 数据库服务 (独立的新数据库) ---
  wordpress-db:
    image: mariadb:10.6
    container_name: my_wp
    restart: always
    command: '--default-authentication-plugin=mysql_native_password'
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    networks:
      - wordpress_net

  # --- WordPress 应用服务 ---
  wordpress-app:
    image: wordpress:latest
    container_name: my_wp_app
    restart: always
    ports:
      - "9081:80"
    environment:
      # 注意:因为是在同一个 compose 文件里,这里直接写服务名 wordpress-db 即可
      # docker 会自动解析到上面那个 my_wp 容器
      WORDPRESS_DB_HOST: wordpress-db:3306
      WORDPRESS_DB_USER: ${MYSQL_USER}
      WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
      WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
    volumes:
      - ./wp-data:/var/www/html/wp-content
    depends_on:
      - wordpress-db
    networks:
      - wordpress_net
networks:
  wordpress_net:
    driver: bridge

env环境配置:

MYSQL_ROOT_PASSWORD=数据库root密码
MYSQL_DATABASE=数据库名称
MYSQL_USER=数据库用户名
MYSQL_PASSWORD=数据库密码

# WordPress Site URL (if needed for some plugins/themes)
# WP_HOME=https://yourdomain.com
# WP_SITEURL=https://yourdomain.com

npm 配置文件

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'  # 保持默认即可,不建议修改左侧的80
      - '81:81'  # 冒号左边可以改成自己服务器未被占用的端口
      - '443:443' # 保持默认即可,不建议修改左侧的443
    volumes:
      - ./data:/data # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 data 文件夹中
      - ./letsencrypt:/etc/letsencrypt  # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 letsencrypt 文件夹中
0

评论区