183 lines
3.3 KiB
Markdown
183 lines
3.3 KiB
Markdown
# 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
|
||
- 定期备份数据库文件 |