docs: 添加完整的 Docker 部署教程
- README.md: 新增详细的 Docker 部署章节 - Docker Compose 方式(推荐) - Docker 命令方式 - 多阶段构建(生产环境) - 故障排查命令 - 部署检查清单 - Dockerfile: 优化安全配置 - 使用非 root 用户运行 - 添加健康检查 - 修正端口为 3030 - 优化目录权限 - 新增 docker-compose.yml 示例文件 - 更新 .gitignore 忽略 docker-compose.override.yml
This commit is contained in:
184
README.md
184
README.md
@@ -80,21 +80,195 @@
|
||||
|
||||
## 📦 部署
|
||||
|
||||
### 🐳 Docker(推荐)
|
||||
### 🐳 Docker 部署(推荐)
|
||||
|
||||
#### 方式 1:使用 Docker Compose(推荐)
|
||||
|
||||
**1. 创建 `docker-compose.yml`**
|
||||
|
||||
```yaml
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
qiniu-bot:
|
||||
build: .
|
||||
container_name: qiniu-bot
|
||||
restart: always
|
||||
ports:
|
||||
- "3030:3030"
|
||||
env_file:
|
||||
- .env
|
||||
volumes:
|
||||
- ./config:/app/config
|
||||
- ./logs:/app/logs
|
||||
networks:
|
||||
- qiniu-network
|
||||
|
||||
networks:
|
||||
qiniu-network:
|
||||
driver: bridge
|
||||
```
|
||||
|
||||
**2. 配置环境变量**
|
||||
|
||||
```bash
|
||||
# 构建镜像
|
||||
docker build -t qiniu-feishu-bot .
|
||||
# 复制环境变量模板
|
||||
cp .env.example .env
|
||||
|
||||
# 运行容器
|
||||
# 编辑配置(填入真实信息)
|
||||
nano .env
|
||||
```
|
||||
|
||||
**3. 启动服务**
|
||||
|
||||
```bash
|
||||
# 构建并启动
|
||||
docker-compose up -d --build
|
||||
|
||||
# 查看日志
|
||||
docker-compose logs -f qiniu-bot
|
||||
|
||||
# 停止服务
|
||||
docker-compose down
|
||||
|
||||
# 重启服务
|
||||
docker-compose restart
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### 方式 2:使用 Docker 命令
|
||||
|
||||
**1. 准备配置文件**
|
||||
|
||||
```bash
|
||||
# 创建配置目录
|
||||
mkdir -p config
|
||||
|
||||
# 复制环境变量模板
|
||||
cp .env.example .env
|
||||
|
||||
# 编辑配置
|
||||
nano .env
|
||||
```
|
||||
|
||||
**2. 构建镜像**
|
||||
|
||||
```bash
|
||||
docker build -t qiniu-feishu-bot:latest .
|
||||
```
|
||||
|
||||
**3. 运行容器**
|
||||
|
||||
```bash
|
||||
docker run -d \
|
||||
--name qiniu-bot \
|
||||
--restart always \
|
||||
-p 3030:3030 \
|
||||
--env-file .env \
|
||||
-v $(pwd)/config:/app/config \
|
||||
qiniu-feishu-bot
|
||||
-v $(pwd)/logs:/app/logs \
|
||||
qiniu-feishu-bot:latest
|
||||
```
|
||||
|
||||
**4. 常用命令**
|
||||
|
||||
```bash
|
||||
# 查看日志
|
||||
docker logs -f qiniu-bot
|
||||
|
||||
# 查看容器状态
|
||||
docker ps -a | grep qiniu-bot
|
||||
|
||||
# 重启容器
|
||||
docker restart qiniu-bot
|
||||
|
||||
# 停止容器
|
||||
docker stop qiniu-bot
|
||||
|
||||
# 删除容器
|
||||
docker rm qiniu-bot
|
||||
|
||||
# 查看容器详情
|
||||
docker inspect qiniu-bot
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### 方式 3:使用 Dockerfile 多阶段构建(生产环境)
|
||||
|
||||
**1. 创建 `.dockerignore`**
|
||||
|
||||
```
|
||||
node_modules
|
||||
npm-debug.log
|
||||
.env
|
||||
.env.*
|
||||
.git
|
||||
.gitignore
|
||||
README.md
|
||||
*.md
|
||||
logs/
|
||||
temp/
|
||||
.DS_Store
|
||||
```
|
||||
|
||||
**2. 构建优化镜像**
|
||||
|
||||
```bash
|
||||
docker build --no-cache -t qiniu-feishu-bot:prod .
|
||||
```
|
||||
|
||||
**3. 部署到生产环境**
|
||||
|
||||
```bash
|
||||
# 推送到镜像仓库(可选)
|
||||
docker tag qiniu-feishu-bot:prod your-registry/qiniu-bot:latest
|
||||
docker push your-registry/qiniu-bot:latest
|
||||
|
||||
# 在服务器上拉取并运行
|
||||
docker pull your-registry/qiniu-bot:latest
|
||||
docker run -d \
|
||||
--name qiniu-bot \
|
||||
--restart always \
|
||||
-p 3030:3030 \
|
||||
--env-file .env \
|
||||
-v /path/to/config:/app/config \
|
||||
qiniu-feishu-bot:prod
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### 🔧 Docker 故障排查
|
||||
|
||||
```bash
|
||||
# 查看容器日志
|
||||
docker logs --tail 100 qiniu-bot
|
||||
|
||||
# 进入容器调试
|
||||
docker exec -it qiniu-bot /bin/sh
|
||||
|
||||
# 检查容器健康状态
|
||||
docker inspect --format='{{.State.Health.Status}}' qiniu-bot
|
||||
|
||||
# 查看资源使用
|
||||
docker stats qiniu-bot
|
||||
|
||||
# 清理未使用的镜像
|
||||
docker image prune -a
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### 📋 Docker 部署检查清单
|
||||
|
||||
- [ ] `.env` 文件已配置(包含飞书和七牛云密钥)
|
||||
- [ ] `config/` 目录存在且有权限
|
||||
- [ ] `logs/` 目录存在(用于日志持久化)
|
||||
- [ ] 端口 3030 未被占用
|
||||
- [ ] 防火墙已开放 3030 端口(如果需要公网访问)
|
||||
- [ ] 飞书开放平台事件订阅地址配置正确
|
||||
|
||||
### 🐧 Linux / 🍎 macOS
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user