# Docker 部署指南 ## 快速开始 ### 1. 使用 Docker Compose(推荐) ```bash # 克隆项目 git clone cd myusdtshop # 启动服务 docker-compose up -d # 查看日志 docker-compose logs -f # 停止服务 docker-compose down ``` 服务将在 http://localhost:3000 启动 ### 2. 使用单独的 Docker 容器 ```bash # 构建镜像 docker build -t usdt-shop . # 运行容器 docker run -d \ --name usdt-shop \ -p 3000:3000 \ -v $(pwd)/database:/app/database \ -e UPAY_APP_ID=your_app_id \ -e UPAY_APP_SECRET=your_app_secret \ usdt-shop ``` ## 环境变量配置 创建 `.env` 文件来配置环境变量: ```bash # UPay 配置 UPAY_APP_ID=your_production_app_id UPAY_APP_SECRET=your_production_app_secret # 服务端口 PORT=3000 # 运行环境 NODE_ENV=production ``` ## 使用 Nginx 反向代理 如果需要使用 Nginx 反向代理: ```bash # 启动包含 Nginx 的完整服务 docker-compose --profile nginx up -d ``` ### SSL 证书配置 1. 将 SSL 证书放在 `ssl/` 目录下: ``` ssl/ ├── cert.pem └── key.pem ``` 2. 编辑 `nginx.conf` 取消 HTTPS 部分的注释 3. 重启服务: ```bash docker-compose --profile nginx restart nginx ``` ## 数据持久化 - 数据库文件:`./database/shop.db` - 图片文件:`./public/images/` 这些目录已通过 Docker volumes 映射到宿主机,数据会持久化保存。 ## 生产环境部署 1. **修改 UPay 配置**: - 将测试环境的 APP_ID 和 APP_SECRET 改为生产环境值 - 在 `server.js` 中将 API_URL 改为生产环境地址 2. **设置环境变量**: ```bash export UPAY_APP_ID=production_app_id export UPAY_APP_SECRET=production_app_secret ``` 3. **使用 HTTPS**: - 配置 SSL 证书 - 启用 Nginx HTTPS 配置 ## 常用命令 ```bash # 查看运行状态 docker-compose ps # 查看实时日志 docker-compose logs -f usdt-shop # 重启服务 docker-compose restart usdt-shop # 更新应用 docker-compose down docker-compose build --no-cache docker-compose up -d # 备份数据库 docker-compose exec usdt-shop cp /app/database/shop.db /tmp/ docker cp $(docker-compose ps -q usdt-shop):/tmp/shop.db ./backup/ # 进入容器调试 docker-compose exec usdt-shop sh ``` ## 监控和维护 ### 健康检查 应用包含健康检查端点,Docker 会定期检查服务状态: ```bash # 手动检查健康状态 docker-compose exec usdt-shop wget --spider http://localhost:3000 ``` ### 日志管理 ```bash # 查看最近100行日志 docker-compose logs --tail=100 usdt-shop # 按时间过滤日志 docker-compose logs --since="2024-01-01T00:00:00" usdt-shop ``` ## 故障排除 1. **端口占用**: ```bash # 检查端口占用 lsof -i :3000 # 修改端口 # 编辑 docker-compose.yml 中的 ports 配置 ``` 2. **数据库权限问题**: ```bash # 修复数据库文件权限 sudo chown -R 1001:1001 database/ sudo chmod 666 database/shop.db ``` 3. **容器无法启动**: ```bash # 查看详细错误信息 docker-compose logs usdt-shop # 重新构建镜像 docker-compose build --no-cache usdt-shop ``` ## 安全注意事项 - 确保 `.env` 文件不被提交到版本控制 - 定期更新 Docker 镜像和依赖 - 使用强密码和安全的 API 密钥 - 在生产环境中启用 HTTPS - 定期备份数据库文件