feat: 交付官方 Docker 运行时,外观改背景图并下线自定义 CSS/JS

站点/后台分轨背景与用户列表排序一并落地;生产 CORS 改走 SITE_URL,健康检查带版本号。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-18 05:27:33 +08:00
parent 5f7193042f
commit d784b0ea7a
68 changed files with 2588 additions and 768 deletions

72
deploy/docker-compose.yml Normal file
View File

@@ -0,0 +1,72 @@
# 官方运行时契约(变更视为运行时大版本,须写 changelog)
#
# 本地开发不使用本文件:仓库根 docker-compose.yml 只起 Postgres,
# 配合 start.bat / cd backend && go run ./cmd/jiang13 + frontend npm run dev。
# 本 Compose 不含反代:页面 :3000、API :3001 交给宿主机 Nginx / Caddy。
name: jiang13
services:
postgres:
image: postgres:17-alpine
restart: unless-stopped
environment:
POSTGRES_USER: ${POSTGRES_USER:-jiang13}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD in deploy/.env}
POSTGRES_DB: ${POSTGRES_DB:-jiang13}
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-jiang13} -d ${POSTGRES_DB:-jiang13}"]
interval: 5s
timeout: 5s
retries: 5
api:
image: ${JIANG13_IMAGE_API:-jiang13-bbs-api}:${JIANG13_VERSION:-0.1.0}
build:
context: ..
dockerfile: deploy/Dockerfile.api
args:
VERSION: ${JIANG13_VERSION:-0.1.0}
COMMIT: ${JIANG13_COMMIT:-unknown}
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
environment:
HTTP_PORT: "3001"
DEV_MODE: "false"
JIANG13_WORK_PATH: /var/lib/jiang13
DATA_DIR: /var/lib/jiang13/data
DB_DSN: postgres://${POSTGRES_USER:-jiang13}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-jiang13}?sslmode=disable
JWT_SECRET: ${JWT_SECRET:?set JWT_SECRET in deploy/.env}
SITE_URL: ${SITE_URL:-https://localhost}
volumes:
- appdata:/var/lib/jiang13/data
ports:
- "${JIANG13_BIND:-127.0.0.1}:${JIANG13_API_PORT:-3001}:3001"
web:
image: ${JIANG13_IMAGE_WEB:-jiang13-bbs-web}:${JIANG13_VERSION:-0.1.0}
build:
context: ../frontend
dockerfile: ../deploy/Dockerfile.web
args:
VERSION: ${JIANG13_VERSION:-0.1.0}
BACKEND_URL: http://api:3001
restart: unless-stopped
depends_on:
api:
condition: service_healthy
environment:
BACKEND_URL: http://api:3001
NODE_ENV: production
PORT: "3000"
HOSTNAME: 0.0.0.0
ports:
- "${JIANG13_BIND:-127.0.0.1}:${JIANG13_WEB_PORT:-3000}:3000"
volumes:
pgdata:
appdata: