docker-compose.yml
Rama main · réplica de lectura del repositorio original.
services:
postgres:
image: postgres:17-alpine
container_name: assetpilot-postgres
restart: unless-stopped
environment:
- POSTGRES_DB=assetpilot
- POSTGRES_USER=assetpilot
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-assetpilot}
volumes:
- assetpilot-postgres:/var/lib/postgresql/data
assetpilot:
image: es94111/assetpilot:latest
# 如果要自行建置,取消下一行註解並註解 image:
# build: .
container_name: assetpilot
restart: unless-stopped
depends_on:
- postgres
# 僅綁定 loopback:nginx.conf 透過 Docker 內部網路以服務名稱
# (http://assetpilot:3000)連線,不需要把 3000 對外發布到所有介面。
# 對外發布會讓任何人略過 nginx(見 nginx.conf 對 XFF/X-Real-IP 的覆寫)
# 直連 Node,偽造 X-Forwarded-For 繞過應用層速率限制(AUTH-VULN-06)。
ports:
- "127.0.0.1:3000:3000"
volumes:
- assetpilot-data:/app/data
environment:
- PORT=3000
- HOSTNAME=0.0.0.0
- NEXT_TELEMETRY_DISABLED=1
- DATABASE_URL=${DATABASE_URL:-postgres://assetpilot:assetpilot@postgres:5432/assetpilot}
- ENV_PATH=/app/data/.env
- SSL_PATH=/app/data/SSL
- JWT_EXPIRES=7d
- APP_JWT_EXPIRES=90d
- GOOGLE_CLIENT_ID=
# JWT_SECRET 首次啟動自動產生並寫入 /app/data/.env
# 具名 Volume — Docker 自動管理,資料不會因容器刪除而遺失
volumes:
assetpilot-data:
driver: local
assetpilot-postgres:
driver: local