ishop/DOCKER_DEPLOYMENT.md
2025-08-10 12:37:00 +08:00

183 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Docker 部署指南
## 快速开始
### 1. 使用 Docker Compose推荐
```bash
# 克隆项目
git clone <repository-url>
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
- 定期备份数据库文件