From 901906328d137382ed091b9c4dee722ca906da21 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Thu, 6 Aug 2026 20:32:48 -0600 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=9C=AC=E6=9C=BA=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E4=BE=9D=E8=B5=96=20compose=EF=BC=88postgres=2016=20+=20redis?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PostgreSQL 固定 16-alpine 与生产 16.10 对齐,首次启动自动灌入 docs/specs/schema.sql(仅结构)。端口错开为 5433 / 6380。 实测:34 张表与 schema.sql 逐一对应,差集 0,两个服务健康。 Co-Authored-By: Claude Opus 5 --- docker/compose.dev.yml | 44 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 docker/compose.dev.yml diff --git a/docker/compose.dev.yml b/docker/compose.dev.yml new file mode 100644 index 0000000..09d8392 --- /dev/null +++ b/docker/compose.dev.yml @@ -0,0 +1,44 @@ +# 本机开发用的依赖服务。判题沙箱单独放,因为它要挂载测试用例目录。 +# +# 起: docker compose -f docker/compose.dev.yml up -d +# 停: docker compose -f docker/compose.dev.yml down +# 清空:docker compose -f docker/compose.dev.yml down -v ← 会删掉库里的数据 +# +# PostgreSQL 固定 16,与生产版本(16.10)一致 —— 别图新换 17/18, +# 开发环境用了生产不支持的特性,要到切换那天才炸。 + +services: + postgres: + image: postgres:16-alpine + container_name: oj2-postgres + restart: unless-stopped + environment: + POSTGRES_DB: onlinejudge + POSTGRES_USER: onlinejudge + POSTGRES_PASSWORD: onlinejudge + ports: + - "5433:5432" # 5433 避开可能存在的本机 5432 + volumes: + - oj2-pgdata:/var/lib/postgresql/data + # 首次启动时自动灌入生产库结构(仅结构,无数据) + - ../docs/specs/schema.sql:/docker-entrypoint-initdb.d/01-schema.sql:ro + healthcheck: + test: ["CMD-SHELL", "pg_isready -U onlinejudge -d onlinejudge"] + interval: 5s + timeout: 3s + retries: 10 + + redis: + image: redis:7-alpine + container_name: oj2-redis + restart: unless-stopped + ports: + - "6380:6379" # 6380 避开可能存在的本机 6379 + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 5s + timeout: 3s + retries: 10 + +volumes: + oj2-pgdata: