-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
104 lines (99 loc) · 3.95 KB
/
docker-compose.yml
File metadata and controls
104 lines (99 loc) · 3.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# ==================================================================
# WARNING: This file is auto-generated by generate_docker_compose
# Do not modify this file directly. Instead, update the .env.example
# or docker-compose-template.yaml and regenerate this file.
# ==================================================================
# 环境变量
x-shared-env: $shared_env
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
POSTGRES_DB: ${POSTGRES_DB:-tools_aigc}
EXPOSE_PG_PORT: ${EXPOSE_PG_PORT:-5432}
EXPOSE_APP_PORT: ${EXPOSE_APP_PORT:-8000}
POSTGRES_PORT: ${POSTGRES_PORT:-5432}
POSTGRES_DATA_PATH: ${POSTGRES_DATA_PATH:-/opt/newsee/postgresql/data/}
APP_PORT: ${APP_PORT:-8000}
APP_HOST: ${APP_HOST:-0.0.0.0}
DATABASE_URL: ${DATABASE_URL:-postgresql+asyncpg://postgres:postgres@db:5432/tools_aigc}
DATABASE_POOL_SIZE: ${DATABASE_POOL_SIZE:-10}
DATABASE_MAX_OVERFLOW: ${DATABASE_MAX_OVERFLOW:-10}
DATABASE_ECHO: ${DATABASE_ECHO:-False}
JWT_SECRET_KEY: ${JWT_SECRET_KEY}
JWT_ALGORITHM: ${JWT_ALGORITHM}
JWT_ACCESS_TOKEN_EXPIRE_MINUTES: ${JWT_ACCESS_TOKEN_EXPIRE_MINUTES}
QWEN_API_KEY: ${QWEN_API_KEY}
OPENWEATHERMAP_API_KEY: ${OPENWEATHERMAP_API_KEY}
TOOLS_TIMEOUT: ${TOOLS_TIMEOUT}
LOG_FILE_ENABLED: ${LOG_FILE_ENABLED}
LOG_DB_ENABLED: ${LOG_DB_ENABLED}
BATCH_SIZE: ${BATCH_SIZE}
CAPTURE_RESPONSE_BODY: ${CAPTURE_RESPONSE_BODY}
MAX_RESPONSE_SIZE: ${MAX_RESPONSE_SIZE}
LOG_ROTATION_BY_DAY: ${LOG_ROTATION_BY_DAY}
LOG_MAX_SIZE: ${LOG_MAX_SIZE}
DB_LOG_ERRORS_ONLY: ${DB_LOG_ERRORS_ONLY}
DOCKERFILE: ${DOCKERFILE:-Dockerfile.prod}
MIGRATION_CMD: ${MIGRATION_CMD:-alembic upgrade head}
APP_CMD: ${APP_CMD:-uvicorn app.main:app --host ${APP_HOST:-0.0.0.0} --port ${APP_PORT:-8000}}
services:
# PostgreSQL 数据库服务
db:
image: postgres:15-alpine
volumes:
- postgres_data:${POSTGRES_DATA_PATH:-/opt/newsee/postgresql/data/}
environment:
<<: *shared_env
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
POSTGRES_DB: ${POSTGRES_DB:-tools_aigc}
ports:
- "${EXPOSE_PG_PORT:-5432}:${POSTGRES_PORT:-5432}"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres}"]
interval: 5s
timeout: 5s
retries: 5
# 应用服务
app:
build:
context: .
dockerfile: ${DOCKERFILE:-Dockerfile.prod}
restart: always
depends_on:
db:
condition: service_healthy
ports:
- "${EXPOSE_APP_PORT:-8000}:${APP_PORT:-8000}"
environment:
<<: *shared_env
# 将 DATABASE_URL 中的 localhost 替换为 db
DATABASE_URL: postgresql+asyncpg://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@db:${POSTGRES_PORT:-5432}/${POSTGRES_DB:-tools_aigc}
# 其他环境变量直接从 .env 文件中继承
DATABASE_POOL_SIZE: ${DATABASE_POOL_SIZE:-10}
DATABASE_MAX_OVERFLOW: ${DATABASE_MAX_OVERFLOW:-10}
DATABASE_ECHO: ${DATABASE_ECHO:-False}
JWT_SECRET_KEY: ${JWT_SECRET_KEY}
JWT_ALGORITHM: ${JWT_ALGORITHM}
JWT_ACCESS_TOKEN_EXPIRE_MINUTES: ${JWT_ACCESS_TOKEN_EXPIRE_MINUTES}
QWEN_API_KEY : ${QWEN_API_KEY}
OPENWEATHERMAP_API_KEY: ${OPENWEATHERMAP_API_KEY}
TOOLS_TIMEOUT: ${TOOLS_TIMEOUT}
LOG_FILE_ENABLED: ${LOG_FILE_ENABLED}
LOG_DB_ENABLED: ${LOG_DB_ENABLED}
BATCH_SIZE: ${BATCH_SIZE}
CAPTURE_RESPONSE_BODY: ${CAPTURE_RESPONSE_BODY}
MAX_RESPONSE_SIZE: ${MAX_RESPONSE_SIZE}
LOG_ROTATION_BY_DAY: ${LOG_ROTATION_BY_DAY}
LOG_MAX_SIZE: ${LOG_MAX_SIZE}
DB_LOG_ERRORS_ONLY: ${DB_LOG_ERRORS_ONLY}
command: >
sh -c "
echo '等待数据库完全启动...' &&
sleep 2 &&
echo '运行数据库迁移...' &&
${MIGRATION_CMD:-alembic upgrade head} &&
echo '启动应用...' &&
${APP_CMD:-uvicorn app.main:app --host ${APP_HOST:-0.0.0.0} --port ${APP_PORT:-8000}}
"
volumes:
postgres_data: