140 lines
4.5 KiB
YAML
140 lines
4.5 KiB
YAML
# 独立联调依赖栈;应用在宿主机运行,固定测试凭据,禁止用于生产。
|
|||
|
|
name: msgx-integration
|
||
|
|
|
||
|
|
services:
|
||
|
|
mysql:
|
||
|
|
image: mysql:8.4
|
||
|
|
restart: unless-stopped
|
||
|
|
environment:
|
||
|
|
MYSQL_ROOT_PASSWORD: root_dev_pass
|
||
|
|
MYSQL_DATABASE: cdairport
|
||
|
|
MYSQL_USER: msgx_dev
|
||
|
|
MYSQL_PASSWORD: msgx_dev_pass
|
||
|
|
ports:
|
||
|
|
- "0.0.0.0:13306:3306"
|
||
|
|
volumes:
|
||
|
|
# 与开发栈共用目录,使用共享 SELinux 标签。
|
||
|
|
- ./deploy/dev/mysql-init:/docker-entrypoint-initdb.d:ro,z
|
||
|
|
- 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
|
||
|
|
|
||
|
|
postgres:
|
||
|
|
image: postgres:17-alpine
|
||
|
|
restart: unless-stopped
|
||
|
|
environment:
|
||
|
|
POSTGRES_DB: msgx
|
||
|
|
POSTGRES_USER: msgx_dev
|
||
|
|
POSTGRES_PASSWORD: msgx_dev_pass
|
||
|
|
ports:
|
||
|
|
- "0.0.0.0:15432:5432"
|
||
|
|
volumes:
|
||
|
|
- pg_data:/var/lib/postgresql/data
|
||
|
|
- ./deploy/integration/postgres-init:/docker-entrypoint-initdb.d:ro,Z
|
||
|
|
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
|
||
|
|
|
||
|
|
redis:
|
||
|
|
image: valkey/valkey:8-alpine
|
||
|
|
restart: unless-stopped
|
||
|
|
command: ["valkey-server", "--appendonly", "yes"]
|
||
|
|
ports:
|
||
|
|
- "0.0.0.0:16379: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
|
||
|
|
restart: unless-stopped
|
||
|
|
ports:
|
||
|
|
- "0.0.0.0:19092:9092"
|
||
|
|
environment:
|
||
|
|
KAFKA_NODE_ID: 1
|
||
|
|
KAFKA_PROCESS_ROLES: broker,controller
|
||
|
|
KAFKA_CLUSTER_ID: "4L622nShTUiT8tCdRvgqgA"
|
||
|
|
KAFKA_LISTENERS: EXTERNAL://:9092,INTERNAL://:29092,CONTROLLER://:9093
|
||
|
|
KAFKA_ADVERTISED_LISTENERS: EXTERNAL://${TEST_SERVER_HOST:?Set TEST_SERVER_HOST to the server IP or DNS}:19092,INTERNAL://kafka:29092
|
||
|
|
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: EXTERNAL:PLAINTEXT,INTERNAL:PLAINTEXT,CONTROLLER:PLAINTEXT
|
||
|
|
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
|
||
|
|
KAFKA_CONTROLLER_QUORUM_VOTERS: 1@localhost:9093
|
||
|
|
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
|
||
|
|
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:29092 --list || exit 1"]
|
||
|
|
interval: 5s
|
||
|
|
timeout: 5s
|
||
|
|
retries: 10
|
||
|
|
start_period: 10s
|
||
|
|
|
||
|
|
# 独立于共享信箱;兼容 admin-api 旧 MySQL JDBC 的认证方式。
|
||
|
|
admin-mysql:
|
||
|
|
image: mysql:8.4
|
||
|
|
restart: unless-stopped
|
||
|
|
command: ["--mysql-native-password=ON"]
|
||
|
|
environment:
|
||
|
|
MYSQL_ROOT_PASSWORD: admin_root_dev_pass
|
||
|
|
MYSQL_DATABASE: adminapi
|
||
|
|
MYSQL_USER: admin_dev
|
||
|
|
MYSQL_PASSWORD: admin_dev_pass
|
||
|
|
ports:
|
||
|
|
- "0.0.0.0:13307:3306"
|
||
|
|
volumes:
|
||
|
|
- admin_mysql_data:/var/lib/mysql
|
||
|
|
- ./deploy/integration/admin-mysql-init:/docker-entrypoint-initdb.d:ro,Z
|
||
|
|
healthcheck:
|
||
|
|
test: ["CMD-SHELL", "MYSQL_PWD=$$MYSQL_PASSWORD mysql -h 127.0.0.1 -u$$MYSQL_USER -D adminapi -e 'SELECT 1' || exit 1"]
|
||
|
|
interval: 5s
|
||
|
|
timeout: 5s
|
||
|
|
retries: 20
|
||
|
|
start_period: 30s
|
||
|
|
|
||
|
|
# admin-api 使用 TransportClient 6.4.2,不可直接改成现代 ES 的 REST 端口。
|
||
|
|
# 旧版仅供受控测试网络,Apple Silicon 需要 amd64 模拟运行支持。
|
||
|
|
elasticsearch:
|
||
|
|
image: docker.elastic.co/elasticsearch/elasticsearch:6.4.2
|
||
|
|
platform: linux/amd64
|
||
|
|
restart: unless-stopped
|
||
|
|
environment:
|
||
|
|
discovery.type: single-node
|
||
|
|
cluster.name: docker-cluster
|
||
|
|
xpack.security.enabled: "false"
|
||
|
|
ES_JAVA_OPTS: "-Xms512m -Xmx512m"
|
||
|
|
ports:
|
||
|
|
- "0.0.0.0:19200:9200"
|
||
|
|
- "0.0.0.0:19300:9300"
|
||
|
|
volumes:
|
||
|
|
- es_data:/usr/share/elasticsearch/data
|
||
|
|
healthcheck:
|
||
|
|
test: ["CMD-SHELL", "curl -fsS 'http://localhost:9200/_cluster/health?wait_for_status=yellow&timeout=3s' | grep -q '\"timed_out\":false'"]
|
||
|
|
interval: 10s
|
||
|
|
timeout: 5s
|
||
|
|
retries: 30
|
||
|
|
start_period: 30s
|
||
|
|
|
||
|
|
volumes:
|
||
|
|
admin_mysql_data:
|
||
|
|
es_data:
|
||
|
|
mysql_data:
|
||
|
|
pg_data:
|
||
|
|
redis_data:
|