v0.15.0: Docker 化部署(OVH-US-BAK)

- Dockerfile(oven/bun 多阶段:构建 dist + 全量 node_modules 运行时)
- deploy/docker-compose.yml(postgres:18 + app,uploads 双挂载同宿主目录)
- .dockerignore(uploads 经卷挂载不进镜像,避免 3GB 膨胀)
- prod-server /uploads/* 运行时直读磁盘(媒体上传后无需重启即可访问,含路径穿越防护)
- README Docker 部署章节
This commit is contained in:
bigcode
2026-11-04 15:15:58 +08:00
parent 62e6bcfcd2
commit c3df5d9db1
6 changed files with 104 additions and 2 deletions
+37
View File
@@ -0,0 +1,37 @@
# dusuniot 生产部署编排(放在 /home/docker/dusuniot/ 下使用,源码 rsync 到 ./app)
# 用法:docker compose up -d --build
name: dusuniot
services:
# # 数据库服务 PostgreSQL 18(数据落 ./data/pg,不对外暴露端口)
db:
image: postgres:18
restart: unless-stopped
environment:
POSTGRES_USER: dusuniot
POSTGRES_PASSWORD: dusuniot
POSTGRES_DB: dusuniot
volumes:
- ./data/pg:/var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U dusuniot -d dusuniot"]
interval: 10s
timeout: 5s
retries: 12
# # 应用服务 TanStack Start + Bun(nginx 反代 127.0.0.1:3320)
app:
build: ./app
restart: unless-stopped
depends_on:
db:
condition: service_healthy
environment:
DATABASE_URL: postgres://dusuniot:dusuniot@db:5432/dusuniot
PORT: "3312"
ports:
- "127.0.0.1:3320:3312"
volumes:
# 双挂载同一宿主目录:adminUploadMedia 写 public/uploads(cwd 相对),
# prod-server 的 /uploads 直读与启动静态表走 dist/client/uploads
- ./data/uploads:/app/public/uploads
- ./data/uploads:/app/dist/client/uploads