68 lines
2.5 KiB
YAML
68 lines
2.5 KiB
YAML
# telesrv 第一阶段三方依赖(开发用)。
|
||
#
|
||
# 启动: docker compose up -d
|
||
# 状态: docker compose ps
|
||
# 关停: docker compose down (保留数据卷)
|
||
# 清空: docker compose down -v (连数据卷一起删,重置 schema/数据)
|
||
#
|
||
# server 端连接串见 internal/config/config.go 的默认值(localhost:5432 / localhost:6399)。
|
||
#
|
||
# 容器/卷命名可通过 TELESRV_DOCKER_PROJECT / TELESRV_DOCKER_PREFIX 覆盖(默认 owpengram):
|
||
# start-server.sh 对已存在 telesrv_* 卷、且用户拒绝一次性改名迁移的安装,会把这两个变量
|
||
# 固定设为 telesrv,从而永久保留旧命名,不动用户现有的 telesrv_pgdata / telesrv_redisdata。
|
||
name: ${TELESRV_DOCKER_PROJECT:-owpengram}
|
||
|
||
services:
|
||
postgres:
|
||
image: postgres:17-alpine
|
||
container_name: ${TELESRV_DOCKER_PREFIX:-owpengram}-postgres
|
||
# 全库已去分区(普通表),max_locks_per_transaction 默认 64 已够;512 仅留余量,对内存近乎零开销。
|
||
# pg_stat_statements:聚合各 SQL 的累计/平均耗时与调用次数,用于定位 postgres 容器 CPU 热点
|
||
# (telesrv 是宿主进程,docker stats 里的 CPU 尖峰是本容器)。需 CREATE EXTENSION 后才有视图:
|
||
# docker exec -i owpengram-postgres psql -U telesrv -d telesrv -c "CREATE EXTENSION IF NOT EXISTS pg_stat_statements;"
|
||
command:
|
||
- "postgres"
|
||
- "-c"
|
||
- "max_locks_per_transaction=512"
|
||
- "-c"
|
||
- "shared_preload_libraries=pg_stat_statements"
|
||
- "-c"
|
||
- "pg_stat_statements.track=all"
|
||
- "-c"
|
||
- "track_io_timing=on"
|
||
environment:
|
||
POSTGRES_DB: telesrv
|
||
POSTGRES_USER: telesrv
|
||
POSTGRES_PASSWORD: telesrv
|
||
TZ: UTC
|
||
ports:
|
||
- "5432:5432"
|
||
volumes:
|
||
- pgdata:/var/lib/postgresql/data
|
||
healthcheck:
|
||
test: ["CMD-SHELL", "pg_isready -U telesrv -d telesrv"]
|
||
interval: 5s
|
||
timeout: 3s
|
||
retries: 10
|
||
restart: unless-stopped
|
||
|
||
redis:
|
||
image: redis:7-alpine
|
||
container_name: ${TELESRV_DOCKER_PREFIX:-owpengram}-redis
|
||
command: ["redis-server", "--appendonly", "yes"]
|
||
ports:
|
||
- "6399:6379" # 宿主 6379 常被其他项目占用,telesrv 对外用 6399(容器内仍 6379)
|
||
volumes:
|
||
- redisdata:/data
|
||
healthcheck:
|
||
test: ["CMD", "redis-cli", "ping"]
|
||
interval: 5s
|
||
timeout: 3s
|
||
retries: 10
|
||
restart: unless-stopped
|
||
|
||
volumes:
|
||
pgdata:
|
||
name: ${TELESRV_DOCKER_PREFIX:-owpengram}_pgdata
|
||
redisdata:
|
||
name: ${TELESRV_DOCKER_PREFIX:-owpengram}_redisdata
|