vim docker-compose.yml
version: '3'
services:
# MySQL 数据库服务
db:
image: mysql:5.7
container_name: wordpress_db
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_strong_root_password # 请修改为强密码!
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress_password # 请修改为强密码!
# WordPress 应用服务
wordpress:
depends_on:
- db
image: wordpress:latest
container_name: wordpress_app
ports:
- "81:80" # 将服务器的81端口映射到容器的80端口
restart: always
volumes:
- wordpress_data:/var/www/html # 挂载数据卷,持久化博客内容
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress_password # 与上面数据库密码一致
WORDPRESS_DB_NAME: wordpress
volumes:
db_data:
wordpress_data:
启动:
docker compose up -d
配置详解:
db 和 wordpress 是两个服务,分别对应数据库和博客应用。
volumes 定义了数据卷,用于将容器内的数据持久化存储在宿主机上。这是确保数据不丢失的关键。
environment 下的变量是 WordPress 安装和连接数据库所必需的信息。
ports 将服务器的 81 端口映射到容器的 80 端口。这样,通过服务器的IP或域名就能直接访问博客
因为nginx需要使用80端口 这里所以使用81来映射
添加/etc/nginx/conf.d/wordpress.conf
server {
listen 80;
server_name htlearnlinux.top
location / {
proxy_pass http://localhost:81;
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;
}
}
sudo nginx -t
sudo systemctl restart nginx.service
在浏览器输入http://htlearnlinux.top/
添加ssl证书
申请证书完毕后 下载nginx版本的证书 解压后移动到/etc/nginx/ssl/htlearnlinux.top/
sudo chmod 600 /etc/nginx/ssl/htlearnlinux.top/*
修改配置文件/etc/nginx/conf.d/wordpress.conf
server {
listen 80;
server_name htlearnlinux.top;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name htlearnlinux.top;
ssl_certificate /etc/nginx/ssl/htlearnlinux.top/htlearnlinux.top_bundle.crt;
ssl_certificate_key /etc/nginx/ssl/htlearnlinux.top/htlearnlinux.top.key;
location / {
proxy_pass http://localhost:81;
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;
}
sudo systemctl restart nginx.service
发表回复