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 文件夹中
评论区