2026-09-07 15:11:06 +08:00
|
|
|
|
# =====================================================================
|
|
|
|
|
|
# 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
|
|
|
|
|
|
|
2026-09-07 16:12:00 +08:00
|
|
|
|
# 由 Flyway 自动执行 V1.0.0 与 V1.1.0 迁移
|
2026-09-07 15:11:06 +08:00
|
|
|
|
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:
|
2026-09-08 11:39:35 +08:00
|
|
|
|
- "${MSGX_PG_PORT:-5432}:5432"
|
2026-09-07 15:11:06 +08:00
|
|
|
|
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
|
|
|
|
|
|
|
2026-09-07 16:12:00 +08:00
|
|
|
|
# ACM2-28:Redis 已退出阶段 A 权威与写路径(FLIGHT_SCHD 落自有 PG)。
|
|
|
|
|
|
# 本服务保留至切流,供 FS7 影子 diff 对拍工具读取现役 legacy Redis flightInfo 与本地辅助冒烟。
|
2026-09-07 15:11:06 +08:00
|
|
|
|
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:
|