# 单栈部署(2026-09-03 主干收敛后,一切以 v2 为准): # https://official.inkreach.cc/v2/admin/ -> v2-admin(SPA) # https://official.inkreach.cc/v2-api/ -> v2-api(小程序/后台同路径,去前缀转发) # https://official.inkreach.cc/public/ -> v2-api(H5 历史构建同源 API) # /uploads/ /assets/ -> v2-api;证书续期走 certbot 挂载;边缘入口为 admin 服务。 # v1(旧栈 api+postgres)已退役:容器停用未删,最终档案在 deploy/backups/consolidation-*/。 # v2 数据卷沿用原 deploy-v2 项目卷(external 引用),数据未迁移未改动。 services: v2-postgres: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: inkreach POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: inkreach volumes: - v2-pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U inkreach -d inkreach"] interval: 10s timeout: 5s retries: 10 v2-api: build: context: .. dockerfile: deploy/api.Dockerfile restart: unless-stopped depends_on: v2-postgres: condition: service_healthy environment: NODE_ENV: production PORT: 3001 DATABASE_URL: postgresql://inkreach:${POSTGRES_PASSWORD}@v2-postgres:5432/inkreach JWT_SECRET: ${JWT_SECRET} CORS_ORIGINS: "*" # 激活 product-family 聚合公开读路径 PUBLIC_DETAIL_FROM_FAMILY: "true" volumes: - v2-uploads:/app/uploads v2-admin: build: context: .. dockerfile: deploy/admin.Dockerfile args: VITE_API_BASE: /v2-api/ restart: unless-stopped depends_on: - v2-api volumes: - ./nginx/admin.v2.conf:/etc/nginx/conf.d/default.conf:ro # 边缘入口:80/443、证书、全站路由与静态资源(/、/admin/、/h5/ 为历史构建,保留展示) admin: build: context: .. dockerfile: deploy/admin.Dockerfile args: VITE_API_BASE: /v2-api/ restart: unless-stopped depends_on: - v2-api ports: - "80:80" - "443:443" volumes: - ./nginx/admin.conf:/etc/nginx/conf.d/default.conf:ro - ./certbot/www:/var/www/certbot:ro - ./certbot/acme:/etc/nginx/certs:ro volumes: v2-pgdata: external: true name: deploy-v2_pgdata v2-uploads: external: true name: deploy-v2_uploads