Files
msgexchange-v2/compose.yaml
T
windyboy a54c3c1804 test(jdbc): make PG integration tests self-contained on env-configured port
Restore 3 v2 tests lost in file corruption (persistNextStates roundtrip,
legacy columns all-null, schd_gen last_message_id CAS) — 13 JDBC cases.
Add idempotent Flyway migrate in @BeforeEach so an empty container works.
Parameterize compose port as ${MSGX_PG_PORT:-5432}. Verified 14/14 green
(0 skipped) against real PostgreSQL on :5433.
2026-09-08 11:39:35 +08:00

108 lines
3.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.
# =====================================================================
# msgexchange-v2 本地开发依赖中间件栈(ACM2-13 口径)
# 兼容 Podman Compose 与 Docker Compose
# 包含:
# - mysql: 共享信箱 MySQL 8.4 LTS(库 cdairport,初始化 CMINMSGS/COUTMSGS
# - postgres: 自有 PostgreSQL 17-alpine(库 msgx,由应用 Flyway 建表)
# - redis: 航班动态 + 快照 gen 开源替代品 Valkey 8-alpine(兼容 Redis 7.2+ 协议与 Lua
# - kafka: 单节点 Apache Kafka 3.8.0 KRaft
# =====================================================================
services:
mysql:
image: mysql:8.4
container_name: msgx-dev-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root_dev_pass
MYSQL_DATABASE: cdairport
MYSQL_USER: ${MSGX_MAILBOX_USER:-msgx_dev}
MYSQL_PASSWORD: ${MSGX_MAILBOX_PASSWORD:-msgx_dev_pass}
ports:
- "3306:3306"
volumes:
- ./deploy/dev/mysql-init:/docker-entrypoint-initdb.d:ro
- mysql_data:/var/lib/mysql
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -u$$MYSQL_USER -p$$MYSQL_PASSWORD --silent || exit 1"]
interval: 5s
timeout: 5s
retries: 10
start_period: 15s
# 由 Flyway 自动执行 V1.0.0 与 V1.1.0 迁移
postgres:
image: postgres:17-alpine
container_name: msgx-dev-postgres
restart: unless-stopped
environment:
POSTGRES_DB: msgx
POSTGRES_USER: ${MSGX_PG_USER:-msgx_dev}
POSTGRES_PASSWORD: ${MSGX_PG_PASSWORD:-msgx_dev_pass}
ports:
- "${MSGX_PG_PORT:-5432}:5432"
volumes:
- pg_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB -h 127.0.0.1 || exit 1"]
interval: 5s
timeout: 5s
retries: 10
start_period: 5s
# ACM2-28Redis 已退出阶段 A 权威与写路径(FLIGHT_SCHD 落自有 PG)。
# 本服务保留至切流,供 FS7 影子 diff 对拍工具读取现役 legacy Redis flightInfo 与本地辅助冒烟。
redis:
image: valkey/valkey:8-alpine
container_name: msgx-dev-redis
restart: unless-stopped
command: ["valkey-server", "--appendonly", "yes"]
ports:
- "6379:6379"
volumes:
- redis_data:/data
healthcheck:
test: ["CMD-SHELL", "valkey-cli ping | grep PONG || exit 1"]
interval: 5s
timeout: 5s
retries: 10
start_period: 5s
kafka:
image: apache/kafka:3.8.0
container_name: msgx-dev-kafka
restart: unless-stopped
ports:
- "9092:9092"
environment:
# KRaft 单节点角色与集群 ID
KAFKA_NODE_ID: 1
KAFKA_PROCESS_ROLES: broker,controller
KAFKA_CLUSTER_ID: "4L622nShTUiT8tCdRvgqgA"
# 监听器与协议映射
KAFKA_LISTENERS: PLAINTEXT://:9092,CONTROLLER://:9093
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_CONTROLLER_QUORUM_VOTERS: 1@localhost:9093
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
# 单节点副本与分区配置(满足 acks=all + 幂等生产者)
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_DEFAULT_REPLICATION_FACTOR: 1
KAFKA_NUM_PARTITIONS: 1
KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"
KAFKA_LOG_DIRS: /tmp/kraft-combined-logs
healthcheck:
test: ["CMD-SHELL", "/opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --list || exit 1"]
interval: 5s
timeout: 5s
retries: 10
start_period: 10s
volumes:
mysql_data:
pg_data:
redis_data: