Files
patbond-api/docker-compose.yml
T
lixi 3c671fcaf5
CI / backend-test (push) Successful in 7m15s
feat: 新建 patbond-community 模块骨架(ADR-017,T3-02)
社区服务 :8084 挂入父 pom 与 compose(第五容器,依赖 postgres 健康 + user
先起保证 V5 已执行);/api/v1/** 自骨架起接 RS256 资源侧校验(无 token/畸形/
错签/过期均 401+40101,user/pet 同款复制,P9 下沉待拍板);GET /health 探活
在 /api/v1 之外;.sample 配置模式;生产 classpath 无 Flyway,测试经 user jar
跑全链 V1..V5(pet 先例)。模块只读写 community schema。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-08 16:16:26 +08:00

110 lines
4.7 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.
# Patbond MVP 编排(ADR-007):应用容器无状态,PostgreSQL 数据落 volume。
# 使用步骤见 Readme.md「Docker Compose」一节:
# 1) ./deploy/init-secrets.sh 生成 RS256 密钥对与 .env(均不入库)
# 2) JAVA_HOME=... ./mvnw -DskipTests package
# 3) docker compose up -d --build
#
# 配置来源:容器内挂载各服务的 application.yml.sample 作为配置文件,
# 其中的 ${PATBOND_*} 占位由下方 environment 注入 —— 与本机运行同一套约定。
name: patbond
services:
postgres:
image: postgres:18
environment:
POSTGRES_DB: ${PATBOND_DB_NAME:-patbond}
POSTGRES_USER: ${PATBOND_DB_USER:-patbond}
POSTGRES_PASSWORD: ${PATBOND_DB_PASSWORD:?先运行 deploy/init-secrets.sh 生成 .env}
volumes:
# postgres:18 官方镜像的挂载点是 /var/lib/postgresql(含版本子目录)
- pgdata:/var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${PATBOND_DB_USER:-patbond} -d ${PATBOND_DB_NAME:-patbond}"]
interval: 2s
timeout: 3s
retries: 30
# 数据库不对宿主机发布端口;调试需要时可临时加 ports: ["15432:5432"]
user:
build: ./patbond-user
environment:
SPRING_CONFIG_LOCATION: file:/config/application.yml
PATBOND_DB_URL: jdbc:postgresql://postgres:5432/${PATBOND_DB_NAME:-patbond}
PATBOND_DB_USER: ${PATBOND_DB_USER:-patbond}
PATBOND_DB_PASSWORD: ${PATBOND_DB_PASSWORD:?先运行 deploy/init-secrets.sh 生成 .env}
PATBOND_INTERNAL_TOKEN: ${PATBOND_INTERNAL_TOKEN:?先运行 deploy/init-secrets.sh 生成 .env}
PATBOND_JWT_PUBLIC_KEY: /run/patbond/keys/jwt-public.pem
volumes:
- ./patbond-user/src/main/resources/application.yml.sample:/config/application.yml:ro
- ./deploy/keys:/run/patbond/keys:ro
# MVP 直连暴露 8082 供客户端访问 /api/v1/me/internal/** 已有服务间鉴权,
# 规模化阶段应由网关统一入口并停止直接暴露本端口。
ports:
- "${PATBOND_USER_PORT:-8082}:8082"
depends_on:
postgres:
condition: service_healthy
auth:
build: ./patbond-auth
environment:
SPRING_CONFIG_LOCATION: file:/config/application.yml
PATBOND_USER_SERVICE_URL: http://user:8082
PATBOND_INTERNAL_TOKEN: ${PATBOND_INTERNAL_TOKEN:?先运行 deploy/init-secrets.sh 生成 .env}
PATBOND_JWT_PRIVATE_KEY: /run/patbond/keys/jwt-private.pem
volumes:
- ./patbond-auth/src/main/resources/application.yml.sample:/config/application.yml:ro
- ./deploy/keys:/run/patbond/keys:ro
ports:
- "${PATBOND_AUTH_PORT:-8081}:8081"
depends_on:
- user
# M2(ADR-009):宠物健康档案服务。第二波起提供 /api/v1/pets、/api/v1/breeds
# 业务端点(RS256 校验,与 user 同一公钥)。与 user 共库;Flyway 迁移链由
# user 服务统一执行,故依赖 user 先起,保证 pet_health schema 已就绪。
pet:
build: ./patbond-pet
environment:
SPRING_CONFIG_LOCATION: file:/config/application.yml
PATBOND_DB_URL: jdbc:postgresql://postgres:5432/${PATBOND_DB_NAME:-patbond}
PATBOND_DB_USER: ${PATBOND_DB_USER:-patbond}
PATBOND_DB_PASSWORD: ${PATBOND_DB_PASSWORD:?先运行 deploy/init-secrets.sh 生成 .env}
PATBOND_JWT_PUBLIC_KEY: /run/patbond/keys/jwt-public.pem
volumes:
- ./patbond-pet/src/main/resources/application.yml.sample:/config/application.yml:ro
- ./deploy/keys:/run/patbond/keys:ro
ports:
- "${PATBOND_PET_PORT:-8083}:8083"
depends_on:
postgres:
condition: service_healthy
user:
condition: service_started
# M3ADR-017):社区服务(Feed/帖子/评论/互动)。骨架起 /api/v1/** 即接
# RS256 校验(与 user/pet 同一公钥);只读写 community schema。与 user 共库;
# Flyway 迁移链(V1..V5,含 community 基线)由 user 服务统一执行,故依赖
# user 先起,保证 community schema 已就绪。
community:
build: ./patbond-community
environment:
SPRING_CONFIG_LOCATION: file:/config/application.yml
PATBOND_DB_URL: jdbc:postgresql://postgres:5432/${PATBOND_DB_NAME:-patbond}
PATBOND_DB_USER: ${PATBOND_DB_USER:-patbond}
PATBOND_DB_PASSWORD: ${PATBOND_DB_PASSWORD:?先运行 deploy/init-secrets.sh 生成 .env}
PATBOND_JWT_PUBLIC_KEY: /run/patbond/keys/jwt-public.pem
volumes:
- ./patbond-community/src/main/resources/application.yml.sample:/config/application.yml:ro
- ./deploy/keys:/run/patbond/keys:ro
ports:
- "${PATBOND_COMMUNITY_PORT:-8084}:8084"
depends_on:
postgres:
condition: service_healthy
user:
condition: service_started
volumes:
pgdata: