docker配置wordpress和mysql并配置https
我是之前用docker安装过wordpress和mysql
所以我需要先彻底移除现有容器与数据
为了确保重新安装时没有旧数据的干扰,需要先删除容器,再删除它们使用的数据卷。如果做过数据持久化数据没有影响。
-
停止并删除容器
在终端中依次执行以下命令:# 停止容器 docker stop wordpress mysql # 删除容器 docker rm wordpress mysql -
清理数据卷(关键步骤)
仅仅删除容器,之前创建的网站文章、页面、用户评论以及数据库里的所有内容都还保留在Docker的"数据卷"里。要彻底清理,需要删除这些卷。# 删除所有未使用的数据卷 docker volume prune -f请注意:执行此操作后,所有数据将无法恢复,请务必确认您已不需要这些数据。
🌐 创建自定义网络并分配静态IP
要使用静态IP,我们需要创建一个自定义的Docker网络。
# 创建一个名为my-net的自定义网络,并指定其子网范围
docker network create --subnet=172.20.0.0/16 my-net
这个子网172.20.0.0/16是供Docker容器内部使用的,您也可以根据需要修改。
🐳 使用静态IP重新部署
现在,我们在这个自定义网络中启动MySQL和WordPress容器,并为它们分配固定的IP地址。
-
启动MySQL数据库
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是您自己设定的强密码。
-
-
启动WordPress网站
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时会报错
-
✅ 验证与访问
完成以上步骤后,可以进行验证:
-
运行
docker ps确认两个容器都处于运行状态。 -
在浏览器访问您的服务器IP或域名(例如
http://您的服务器IP),应该能看到WordPress的安装界面。
💡 一些补充说明
这里docker启动的mysql和wordpress配置了固定ip,以后系统重启也不会出错了
建议设置自动重启:
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
-
更新WordPress地址
-
进入 设置 > 常规
-
将 WordPress地址(URL) 和 站点地址(URL) 都改为
https://yourdomain.com -
点击 保存更改
-
在WordPress的
wp-config.php文件中添加以下代码(在<?php后面):// 强制使用HTTPS define('FORCE_SSL_ADMIN', true); if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') { $_SERVER['HTTPS'] = 'on'; }
访问网站https 正常访问 有问题及时告诉我
-

浙公网安备 33010602011771号