oa-ai/docker-compose.yml

44 lines
1.5 KiB
YAML

services:
oa-ai:
build: .
container_name: oa-ai
ports:
- "6179:3000"
environment:
- LDAP_URL=ldap://lldap:3890
- LDAP_BASE_DN=dc=tlyq,dc=ai
- LLDAP_ADMIN_PASSWORD=${LLDAP_ADMIN_PASSWORD}
- JWT_SECRET=${JWT_SECRET:-oa-shared-jwt-secret-tlyq-2026}
- COOKIE_DOMAIN=.tlyq.ai
- NODE_ENV=production
- NODE_TLS_REJECT_UNAUTHORIZED=0
- HOSTNAME=0.0.0.0
- TZ=Asia/Shanghai
- ASSETS_DB_PATH=/data/other-sites/assets/assets.db
- ISSUE_DB_PATH=/data/other-sites/issue/issue.db
- RESEND_API_KEY=${RESEND_API_KEY}
- AUTHELIA_URL=${AUTHELIA_URL:-https://sso.tlyq.ai}
- OIDC_CLIENT_ID=${OIDC_CLIENT_ID:-oa-oidc}
- OIDC_CLIENT_SECRET=${OIDC_CLIENT_SECRET}
- OIDC_REDIRECT_URI=${OIDC_REDIRECT_URI:-https://oa.tlyq.ai/api/auth/callback}
volumes:
- ./.next:/app/.next
- /var/run/docker.sock:/var/run/docker.sock
# 挂载外部数据目录(非单个文件),确保 SQLite WAL 文件共享
- /root/docker/ldap-ai/data/lldap:/data/other-sites/lldap
- /var/lib/docker/volumes/assets-ai_assets-data/_data:/data/other-sites/assets
- /var/lib/docker/volumes/issue-ai_issue-data/_data:/data/other-sites/issue
networks:
- webnet
healthcheck:
test: ["CMD", "node", "-e", "fetch('http://localhost:3000/api/health').then(r=>{if(!r.ok)process.exit(1)}).catch(()=>process.exit(1))"]
interval: 30s
timeout: 5s
retries: 3
start_period: 40s
restart: unless-stopped
networks:
webnet:
external: true