services:
# =====================
# MongoDB 4.2
# =====================
mongodb:
image: mongo:4.2
container_name: mongodb
restart: always
mem_limit: 1073741824
ports:
- "27027:27017"
volumes:
- ./mongodb/data:/data/db
networks:
- services-network
command: --wiredTigerCacheSizeGB 1
# =====================
# MySQL 8
# =====================
mysql8:
image: mysql:8
container_name: mysql8
restart: always
mem_limit: 1073741824
ports:
- "3316:3306"
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/conf:/etc/mysql/conf.d
environment:
MYSQL_ROOT_PASSWORD: "RootPass123!"
MYSQL_DATABASE: appdb
networks:
- services-network
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
# =====================
# Oracle Database Express Edition 21c
# =====================
oracle-xe:
image: gvenzl/oracle-xe:21.3.0
container_name: oracle-xe
restart: always
mem_limit: 4294967296
shm_size: 2gb
ports:
- "1521:1521"
- "5500:5500"
volumes:
- ./oracle-xe/data:/opt/oracle/oradata
environment:
ORACLE_PASSWORD: "OracleXE123!"
ORACLE_CHARACTERSET: "AL32UTF8"
networks:
- services-network
# =====================
# openGauss (高斯数据库社区版) 5.0.0
# =====================
opengauss:
image: opengauss/opengauss:5.0.0
container_name: opengauss
restart: always
privileged: true
mem_limit: 2147483648
ports:
- "15432:5432"
volumes:
- ./opengauss/data:/var/lib/opengauss/data
environment:
GS_PASSWORD: "OpenGauss@123"
networks:
- services-network
# =====================
# RabbitMQ 3.12
# =====================
rabbitmq:
image: rabbitmq:3.12-management
container_name: rabbitmq
restart: no
mem_limit: 536870912
ports:
- "5672:5672"
- "15672:15672"
volumes:
- ./rabbitmq/data:/var/lib/rabbitmq
environment:
RABBITMQ_DEFAULT_USER: admin
RABBITMQ_DEFAULT_PASS: "Admin123!"
networks:
- services-network
# =====================
# Kafka (KRaft 模式, 无需 Zookeeper)
# =====================
kafka:
image: confluentinc/cp-kafka:7.5.3
container_name: kafka
restart: no
mem_limit: 1073741824
ports:
- "9092:9092"
volumes:
- ./kafka/data:/var/lib/kafka/data
environment:
CLUSTER_ID: "dbDx_GCIYsCsD23V00G1FA"
KAFKA_NODE_ID: 1
KAFKA_PROCESS_ROLES: "broker,controller"
KAFKA_CONTROLLER_QUORUM_VOTERS: "1@kafka:9093"
KAFKA_LISTENERS: "PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093"
KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://127.0.0.1:9092"
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT"
KAFKA_INTER_BROKER_LISTENER_NAME: "PLAINTEXT"
KAFKA_CONTROLLER_LISTENER_NAMES: "CONTROLLER"
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_LOG_RETENTION_HOURS: 168
KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"
networks:
- services-network
# =====================
# Redis 7
# =====================
redis:
image: redis:7
container_name: redis
restart: no
mem_limit: 268435456
ports:
- "6379:6379"
volumes:
- ./redis/data:/data
- ./redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
networks:
- services-network
command: redis-server /usr/local/etc/redis/redis.conf
# =====================
# 网络定义
# =====================
networks:
services-network:
driver: bridge