使用 docker-compose.yml 配置:
- 后端:Docker 容器
- Nginx:宿主机运行
- 数据库:容器内部,通过卷映射持久化
# Windows 环境启动
docker-compose up -d- 数据库:
d:\data\micoblog\database.db - 文件上传:
d:\data\micoblog\uploads\ - Nginx 日志:
d:\Betsy\blog_github\MicoBlog\docker\nginx\logs\
使用 docker-compose-linux.yml 配置:
- 后端:Docker 容器
- Nginx:Docker 容器
- 数据库:容器内部,通过卷映射持久化
# Linux 环境启动
docker-compose -f docker-compose-linux.yml up -d- 数据库:
/var/lib/micoblog/database.db - 文件上传:
/var/lib/micoblog/uploads/ - Nginx 配置:
./nginx/nginx.conf - IP 黑名单:
./nginx/blocked_ips.conf
NODE_ENV: 运行环境 (production/development)PORT: 应用端口 (默认3000)DB_FILE: 数据库文件路径
NGINX_LOG_PATH: Nginx 日志路径 (用于 IP 监控)NGINX_ACCESS_LOG: 访问日志文件名
- 使用容器内部路径
- Nginx 通过 upstream 连接后端服务
- 后端容器映射到
127.0.0.1:3000 - 宿主机 Nginx 代理到容器服务
- 内部网络:
micoblog-network - Nginx 容器通过服务名访问后端:
micoblog-backend:3000 - 外部只暴露 80/443 端口
# Windows
volumes:
- d:\data\micoblog:/app/data
# Linux
volumes:
- /var/lib/micoblog:/app/data- 确保宿主机 Nginx 已配置
- 创建数据目录:
mkdir d:\data\micoblog - 启动容器:
docker-compose up -d - 检查服务:
docker-compose ps
- 克隆项目到服务器
- 进入 docker-deploy 目录
- 配置 IP 黑名单:编辑
nginx/blocked_ips.conf - 启动服务:
docker-compose -f docker-compose-linux.yml up -d - 检查服务:
docker-compose -f docker-compose-linux.yml ps
- 数据库锁定:检查卷权限和路径是否正确
- 静态文件 404:确认 Nginx 配置中的路径映射
- IP 监控失效:检查日志文件路径和权限
# Windows 环境
docker-compose logs -f micoblog-backend
# Linux 环境
docker-compose -f docker-compose-linux.yml logs -f micoblog-backend
docker-compose -f docker-compose-linux.yml logs -f nginx# 停止服务
docker-compose down
# 重新构建镜像
docker-compose build --no-cache
# 启动新版本
docker-compose up -d# 备份数据库
docker exec micoblog-backend cp /app/data/database.db /app/data/database.db.backup
# 导出卷数据
docker run --rm -v micoblog-data:/data -v $(pwd):/backup alpine tar czf /backup/micoblog-backup.tar.gz -C /data .确认 docker-compose.yml 中的 Nginx 路径与实际安装路径一致。
确保 Docker Desktop 正常运行,网络连接正常。
- 数据隔离: Docker 版本默认使用独立的数据目录
- 权限问题: 在 Windows 上可能需要调整文件夹权限
- Nginx 路径: 请根据实际情况调整 Nginx 挂载路径
- 端口唯一性: 确保同时只运行一个版本(Windows 或 Docker)