docker配置wordpress和mysql并配置https

 我是之前用docker安装过wordpress和mysql

所以我需要先彻底移除现有容器与数据

为了确保重新安装时没有旧数据的干扰,需要先删除容器,再删除它们使用的数据卷。如果做过数据持久化数据没有影响。

  1. 停止并删除容器
    在终端中依次执行以下命令:

    bash
    # 停止容器
    docker stop wordpress mysql
    # 删除容器
    docker rm wordpress mysql
  2. 清理数据卷(关键步骤)
    仅仅删除容器,之前创建的网站文章、页面、用户评论以及数据库里的所有内容都还保留在Docker的"数据卷"里。要彻底清理,需要删除这些卷。

    bash
    # 删除所有未使用的数据卷
    docker volume prune -f

    请注意:执行此操作后,所有数据将无法恢复,请务必确认您已不需要这些数据。

🌐 创建自定义网络并分配静态IP

要使用静态IP,我们需要创建一个自定义的Docker网络。

bash
# 创建一个名为my-net的自定义网络,并指定其子网范围
docker network create --subnet=172.20.0.0/16 my-net

这个子网172.20.0.0/16是供Docker容器内部使用的,您也可以根据需要修改。

🐳 使用静态IP重新部署

现在,我们在这个自定义网络中启动MySQL和WordPress容器,并为它们分配固定的IP地址。

  1. 启动MySQL数据库

    bash
    docker run -d \
      --name mysql \
      --network my-net \
      --ip 172.20.0.10 \
      -e MYSQL_ROOT_PASSWORD=mim123456 \
      -v /usr/local/share/mysql/data:/var/lib/mysql \
      -v /usr/local/share/mysql/conf:/etc/mysql/conf.d \
      -v /usr/local/share/mysql/logs:/var/log/mysql \
      mysql:8
    • 这里通过--ip 172.20.0.10为MySQL容器设置了静态IP。

    • 请确保环境变量MYSQL_ROOT_PASSWORD的值mim123456是您自己设定的强密码。

  2. 启动WordPress网站

    bash
    docker run -d \
      --name wordpress \
      --network my-net \
      --ip 172.20.0.20 \
      -e WORDPRESS_DB_HOST=172.20.0.10:3306 \
      -e WORDPRESS_DB_USER=root \
      -e WORDPRESS_DB_PASSWORD=mim123456 \
      -e WORDPRESS_DB_NAME=wordpress \
      -p 80:80 \
      wordpress
    • 这里通过--ip 172.20.0.20为WordPress容器设置了静态IP。

    • 关键配置:WORDPRESS_DB_HOST环境变量现在直接指向MySQL容器的静态IP172.20.0.10,这样两个容器就能通过固定IP可靠地通信了。

    • 注意-p 80:80 如果你下面要配置ssl证书,这里删除,把-p 80:80 \   这一行删除运行,然后启nginx时会报错

✅ 验证与访问

完成以上步骤后,可以进行验证:

  1. 运行 docker ps 确认两个容器都处于运行状态。

  2. 在浏览器访问您的服务器IP或域名(例如 http://您的服务器IP),应该能看到WordPress的安装界面。

💡 一些补充说明

这里docker启动的mysql和wordpress配置了固定ip,以后系统重启也不会出错了

建议设置自动重启:

bash
docker update --restart=unless-stopped mysql wordpress
此时已经配置了自动重启策略


以上完成了wordpress的配置和启动,如果你需要配置ssl证书实现Https的访问。就继续
在家目录生成nginx.conf的代理内容如下(我这个目录是/home/ubuntu/nginx/conf)(我把ssl的证书支持nginx放在/home/ubuntu/ssl),这里运行docker nginx会用到
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;

# HTTP 强制跳转到 HTTPS
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl http2;
server_name yourdomain.com www.yourdomain.com;

# SSL证书路径(容器内的路径)
ssl_certificate /etc/nginx/ssl/yourdomain.com.pem;
ssl_certificate_key /etc/nginx/ssl/yourdomain.com.key;

# SSL安全配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

# 反向代理配置
location / {
proxy_pass http://wordpress:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}

# 健康检查
location /nginx_status {
stub_status;
allow 127.0.0.1;
deny all;
}
}

  以上把nginx.conf文件,和ssl证书放好,运行以下命令启动nginx代理 

docker run -d --name nginx-proxy \
  -p 80:80 -p 443:443 \
  -v /home/ubuntu/nginx/conf/nginx.conf:/etc/nginx/conf.d/default.conf \
  -v /home/ubuntu/ssl:/etc/nginx/ssl \
  --network my-net \
  nginx:alpine
如果正常启动了,你就去wp
  1. 更新WordPress地址

    • 进入 设置 > 常规

    • 将 WordPress地址(URL) 和 站点地址(URL) 都改为 https://yourdomain.com

    • 点击 保存更改

    • 在WordPress的 wp-config.php 文件中添加以下代码(在 <?php 后面):

      php
      // 强制使用HTTPS
      define('FORCE_SSL_ADMIN', true);
      if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
          $_SERVER['HTTPS'] = 'on';
      }

      访问网站https 正常访问 有问题及时告诉我
posted @ 2025-11-21 17:05  zhg1016  阅读(7)  评论(0)    收藏  举报