ether/backend/docker-compose.yml

143 lines
3.5 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.

# ========================================
# 物业管理系统 - 开发环境中间件编排
# 使用docker-compose up -d
# 停止docker-compose down
# ========================================
version: '3.8'
services:
# ====== MySQL 8.0 ======
mysql:
image: mysql:8.0
container_name: pms-mysql
restart: unless-stopped
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root}
TZ: Asia/Shanghai
# 自动创建各服务数据库
MYSQL_DATABASE: auth_db
command: >
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
--default-authentication-plugin=mysql_native_password
--lower_case_table_names=1
volumes:
- mysql-data:/var/lib/mysql
- ./docker/mysql/init:/docker-entrypoint-initdb.d
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-p${MYSQL_ROOT_PASSWORD:-root}"]
interval: 10s
timeout: 5s
retries: 5
networks:
- pms-net
# ====== Redis 7 ======
redis:
image: redis:7-alpine
container_name: pms-redis
restart: unless-stopped
ports:
- "6379:6379"
command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru
volumes:
- redis-data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
networks:
- pms-net
# ====== RabbitMQ 3.12 ======
rabbitmq:
image: rabbitmq:3.12-management
container_name: pms-rabbitmq
restart: unless-stopped
ports:
- "5672:5672" # AMQP 端口
- "15672:15672" # 管理界面
environment:
RABBITMQ_DEFAULT_USER: ${RABBITMQ_USER:-guest}
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_PASS:-guest}
volumes:
- rabbitmq-data:/var/lib/rabbitmq
healthcheck:
test: ["CMD", "rabbitmq-diagnostics", "check_port_connectivity"]
interval: 15s
timeout: 10s
retries: 5
networks:
- pms-net
# ====== Nacos 2.3.0 ======
nacos:
image: nacos/nacos-server:v2.3.0
container_name: pms-nacos
restart: unless-stopped
ports:
- "8848:8848" # Nacos 主端口
- "9848:9848" # gRPC 端口
- "9849:9849" # gRPC 端口
environment:
MODE: standalone
PREFER_HOST_MODE: hostname
SPRING_DATASOURCE_PLATFORM: ""
NACOS_AUTH_ENABLE: "false"
JVM_XMS: 256m
JVM_XMX: 512m
volumes:
- nacos-data:/home/nacos/data
- nacos-logs:/home/nacos/logs
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8848/nacos/v1/console/health/readiness"]
interval: 15s
timeout: 10s
retries: 10
networks:
- pms-net
# ====== Elasticsearch 8.x ======
elasticsearch:
image: elasticsearch:8.11.0
container_name: pms-elasticsearch
restart: unless-stopped
ports:
- "9200:9200"
- "9300:9300"
environment:
discovery.type: single-node
ES_JAVA_OPTS: "-Xms256m -Xmx256m"
xpack.security.enabled: "false"
bootstrap.memory_lock: "true"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- es-data:/usr/share/elasticsearch/data
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:9200/_cluster/health || exit 1"]
interval: 15s
timeout: 10s
retries: 10
networks:
- pms-net
# ====== 数据卷 ======
volumes:
mysql-data:
redis-data:
rabbitmq-data:
nacos-data:
nacos-logs:
es-data:
# ====== 网络 ======
networks:
pms-net:
driver: bridge