owpengram-server/deploy/docker-compose.yml
2026-07-27 23:35:20 +03:00

68 lines
2.5 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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