本文档描述了 188-179 招聘系统的部署流程和配置。
| 组件 | 技术栈 | 端口 | 说明 |
|---|---|---|---|
| Web服务器 | Node.js + Hono | 8080 | 管理后台后端 |
| PostgreSQL | 17 | 5432 | 数据库 |
| Redis | 7 | 6379 | 缓存和会话 |
| MinIO | latest | 9000 | 对象存储 |
最低配置:
推荐配置:
# 构建镜像
docker-compose build
# 启动所有服务
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
# Web服务Dockerfile
FROM node:20.19.2-alpine
WORKDIR /app
# 安装pnpm
RUN npm install -g pnpm@10.18.3
# 复制依赖文件
COPY package.json pnpm-lock.yaml ./
COPY pnpm-workspace.yaml ./
# 安装依赖
RUN pnpm install --frozen-lockfile
# 复制源码
COPY . .
# 构建共享包
RUN pnpm run build:mini-ui-packages
# 构建应用
RUN pnpm build
# 暴露端口
EXPOSE 8080
# 启动命令
CMD ["node", "web/server.js"]
version: '3.8'
services:
postgres:
image: postgres:17
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
- redis_data:/data
minio:
image: minio/minio:latest
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
ports:
- "9000:9000"
- "9001:9001"
volumes:
- minio_data:/data
web:
build: .
ports:
- "8080:8080"
depends_on:
- postgres
- redis
- minio
environment:
DATABASE_URL: postgresql://postgres:postgres@postgres:5432/postgres
REDIS_URL: redis://redis:6379
MINIO_ENDPOINT: minio
MINIO_PORT: 9000
NODE_ENV: production
volumes:
postgres_data:
redis_data:
minio_data:
创建生产环境的 .env.production:
# 数据库配置
DATABASE_URL=postgresql://user:password@production-db:5432/dbname
# Redis配置
REDIS_URL=redis://production-redis:6379
# JWT配置
JWT_SECRET=your-production-jwt-secret-min-32-chars
# MinIO配置
MINIO_ENDPOINT=production-minio
MINIO_PORT=9000
MINIO_ACCESS_KEY=your-access-key
MINIO_SECRET_KEY=your-secret-key
MINIO_BUCKET=d8dai
MINIO_USE_SSL=true
# 应用配置
NODE_ENV=production
PORT=8080
LOG_LEVEL=info
# CORS配置
CORS_ORIGIN=https://your-domain.com
# 设置生产环境
export NODE_ENV=production
# 构建所有包
pnpm build
# 构建小程序UI包
pnpm run build:mini-ui-packages
# 使用PM2管理进程
pm2 start web/server.js --name "d8d-web"
# 查看状态
pm2 status
# 查看日志
pm2 logs d8d-web
# 重启服务
pm2 restart d8d-web
cd web
pnpm db:migrate
# 备份数据库
pnpm db:backup
# 恢复数据库
pnpm db:restore
日志位置:
/var/log/d8d/app.log/var/log/d8d/error.log// logger配置
import { logger } from '@d8d/shared-utils';
logger.setLevel(process.env.LOG_LEVEL || 'info');
server {
listen 443 ssl http2;
server_name your-domain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
# 只开放必要端口
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 22/tcp
ufw enable
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '20.19.2'
- name: Install pnpm
run: npm install -g pnpm@10.18.3
- name: Install dependencies
run: pnpm install
- name: Build
run: pnpm build
- name: Deploy to server
run: |
scp -r . user@server:/var/www/d8d
ssh user@server "cd /var/www/d8d && pm2 restart all"
# 恢复到之前的备份
pnpm db:restore
# 使用PM2回滚到旧版本
pm2 revert d8d-web
# 或切换到之前的Git提交
git checkout <previous-commit>
pnpm build
pm2 restart d8d-web
文档版本: 1.0 最后更新: 2026-01-07