Files
HAOVP/backend/docker-compose-node-01.yml
T

626 lines
20 KiB
YAML

# ============================================================
# Node-01 Docker Compose 配置
# 主节点: MySQL Master, Redis Master, Nacos, NameServer, MinIO, 微服务
# 使用方式: docker compose --env-file config/.env.node-01 up -d
# ============================================================
services:
# ==================== 基础设施 ====================
mysql:
image: mysql:8.0
container_name: mysql
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root123456}
MYSQL_DATABASE: ${MYSQL_DATABASE:-video_platform}
MYSQL_USER: ${MYSQL_USER:-video}
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-video123}
volumes:
- mysql_data:/var/lib/mysql
- ./sql:/docker-entrypoint-initdb.d
- ./config/mysql/my-master.cnf:/etc/mysql/conf.d/my.cnf:ro
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --server-id=1
- --log-bin=mysql-bin
- --binlog-format=ROW
- --gtid-mode=ON
- --enforce-gtid-consistency=ON
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-p${MYSQL_ROOT_PASSWORD:-root123456}"]
interval: 10s
timeout: 5s
retries: 10
networks:
- ha-network
redis:
image: redis:7.0-alpine
container_name: redis
restart: always
ports:
- "6379:6379"
volumes:
- redis_data:/data
- ./config/redis/redis-master.conf:/usr/local/etc/redis/redis.conf:ro
command: redis-server /usr/local/etc/redis/redis.conf
healthcheck:
test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD:-redis_HA_Cluster_2024}", "ping"]
interval: 10s
timeout: 5s
retries: 5
networks:
- ha-network
redis-sentinel:
image: redis:7.0-alpine
container_name: redis-sentinel
restart: always
ports:
- "26379:26379"
volumes:
- sentinel_data:/data
- ./config/redis/sentinel.conf:/usr/local/etc/redis/sentinel.conf
command: sh -c "cp /usr/local/etc/redis/sentinel.conf /data/sentinel.conf && redis-sentinel /data/sentinel.conf"
depends_on:
redis:
condition: service_healthy
networks:
- ha-network
nacos:
image: nacos/nacos-server:v2.3.2
container_name: nacos
restart: always
ports:
- "8848:8848"
- "9848:9848"
- "9849:9849"
environment:
- MODE=cluster
- NACOS_SERVERS=${NACOS_SERVERS:-192.168.1.101:8848,192.168.1.102:8848,192.168.1.103:8848}
- NACOS_SERVER_IP=${HOST_IP:-192.168.1.101}
- NACOS_APPLICATION_PORT=8848
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=mysql
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_DB_NAME=nacos_config
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=${MYSQL_ROOT_PASSWORD:-root123456}
- MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
- NACOS_AUTH_ENABLE=true
- NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
- NACOS_AUTH_IDENTITY_KEY=serverIdentity
- NACOS_AUTH_IDENTITY_VALUE=security
- JVM_XMS=512m
- JVM_XMX=512m
volumes:
- nacos_logs:/home/nacos/logs
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8848/nacos/v1/console/health/liveness"]
interval: 10s
timeout: 5s
retries: 10
depends_on:
mysql:
condition: service_healthy
networks:
- ha-network
rmqnamesrv:
image: apache/rocketmq:5.1.4
container_name: rmqnamesrv
restart: always
ports:
- "9876:9876"
environment:
- JAVA_OPT_EXT=-server -Xms256m -Xmx256m
command: sh mqnamesrv
healthcheck:
test: ["CMD-SHELL", "pgrep -f 'NamesrvStartup' || exit 1"]
interval: 10s
timeout: 5s
retries: 10
start_period: 30s
networks:
- ha-network
minio:
image: quay.io/minio/minio
container_name: minio
restart: always
ports:
- "9100:9000"
- "9101:9001"
environment:
- MINIO_ROOT_USER=minioadmin
- MINIO_ROOT_PASSWORD=minioadmin123
volumes:
- minio_data:/data
command: server /data --console-address ":9001"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 10s
timeout: 5s
retries: 5
networks:
- ha-network
sentinel:
image: sentinel-dashboard:1.8.6
container_name: sentinel
restart: always
ports:
- "8880:8080"
environment:
- JAVA_OPTS=-Xms128m -Xmx256m
- SERVER_PORT=8080
- DASHBOARD_SERVER=localhost:8080
- PROJECT_NAME=sentinel-dashboard
networks:
- ha-network
prometheus:
image: prom/prometheus:v2.54.1
container_name: prometheus
restart: always
ports:
- "9090:9090"
volumes:
- ./monitoring/prometheus/prometheus.ha.yml:/etc/prometheus/prometheus.yml:ro
- prometheus_data:/prometheus
command:
- --config.file=/etc/prometheus/prometheus.yml
- --storage.tsdb.path=/prometheus
- --storage.tsdb.retention.time=15d
networks:
- ha-network
grafana:
image: grafana/grafana:11.2.0
container_name: grafana
restart: always
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_USER=${GRAFANA_ADMIN_USER:-admin}
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD:-admin123}
- GF_USERS_ALLOW_SIGN_UP=false
volumes:
- grafana_data:/var/lib/grafana
- ./monitoring/grafana/provisioning:/etc/grafana/provisioning:ro
- ./monitoring/grafana/dashboards:/var/lib/grafana/dashboards:ro
depends_on:
- prometheus
networks:
- ha-network
mysqld-exporter:
image: prom/mysqld-exporter:v0.16.0
container_name: mysqld-exporter
restart: always
ports:
- "9104:9104"
environment:
- MYSQLD_EXPORTER_PASSWORD=${MYSQL_ROOT_PASSWORD:-root123456}
command:
- --mysqld.address=mysql:3306
- --mysqld.username=root
depends_on:
mysql:
condition: service_healthy
networks:
- ha-network
redis-exporter:
image: oliver006/redis_exporter:v1.62.0
container_name: redis-exporter
restart: always
ports:
- "9121:9121"
environment:
- REDIS_ADDR=redis://redis:6379
- REDIS_PASSWORD=${REDIS_PASSWORD:-redis_HA_Cluster_2024}
depends_on:
redis:
condition: service_healthy
networks:
- ha-network
node-exporter:
image: prom/node-exporter:v1.8.2
container_name: node-exporter
restart: always
ports:
- "19100:9100"
command:
- --path.procfs=/host/proc
- --path.sysfs=/host/sys
- --path.rootfs=/rootfs
- --collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($|/)
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
networks:
- ha-network
# ==================== 微服务 ====================
video-gateway:
build:
context: ./video-gateway
dockerfile: Dockerfile
container_name: video-gateway
restart: always
ports:
- "9000:9000"
- "8719:8719"
environment:
- SPRING_PROFILES_ACTIVE=ha
- NACOS_HOST=nacos
- NACOS_PORT=8848
- NACOS_USERNAME=nacos
- NACOS_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_USERNAME=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
- NACOS_SERVERS=${NACOS_SERVERS:-192.168.1.101:8848,192.168.1.102:8848,192.168.1.103:8848}
- REDIS_PASSWORD=${REDIS_PASSWORD:-redis_HA_Cluster_2024}
- REDIS_SENTINEL_NODES=${REDIS_SENTINEL_NODES:-192.168.1.101:26379,192.168.1.102:26379,192.168.1.103:26379}
- SERVICE_AUTH_TOKEN=${SERVICE_AUTH_TOKEN}
- USER_JWT_SECRET=${USER_JWT_SECRET}
- JWT_EXPIRATION=${JWT_EXPIRATION}
- SENTINEL_DASHBOARD_HOST=${HOST_IP:-192.168.1.101}
- SENTINEL_DASHBOARD_PORT=8880
- SPRING_CLOUD_SENTINEL_TRANSPORT_CLIENT_IP=${HOST_IP:-192.168.1.101}
- SPRING_CLOUD_SENTINEL_TRANSPORT_PORT=8719
- GATEWAY_IP=${HOST_IP:-192.168.1.101}
- JAVA_OPTS=-Xms256m -Xmx512m
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/actuator/health"]
interval: 30s
timeout: 10s
retries: 3
depends_on:
nacos:
condition: service_healthy
networks:
- ha-network
video-auth:
build:
context: ./video-auth
dockerfile: Dockerfile
container_name: video-auth
restart: always
ports:
- "9001:9001"
- "8720:8720"
environment:
- SPRING_PROFILES_ACTIVE=ha
- NACOS_HOST=nacos
- NACOS_PORT=8848
- NACOS_USERNAME=nacos
- NACOS_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_USERNAME=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
- NACOS_SERVERS=${NACOS_SERVERS:-192.168.1.101:8848,192.168.1.102:8848,192.168.1.103:8848}
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_USERNAME=root
- MYSQL_PASSWORD=${MYSQL_ROOT_PASSWORD:-root123456}
- REDIS_PASSWORD=${REDIS_PASSWORD:-redis_HA_Cluster_2024}
- REDIS_SENTINEL_NODES=${REDIS_SENTINEL_NODES:-192.168.1.101:26379,192.168.1.102:26379,192.168.1.103:26379}
- SERVICE_AUTH_TOKEN=${SERVICE_AUTH_TOKEN}
- USER_JWT_SECRET=${USER_JWT_SECRET}
- JWT_EXPIRATION=${JWT_EXPIRATION}
- SENTINEL_DASHBOARD_HOST=${HOST_IP:-192.168.1.101}
- SENTINEL_DASHBOARD_PORT=8880
- SPRING_CLOUD_SENTINEL_TRANSPORT_CLIENT_IP=${HOST_IP:-192.168.1.101}
- SPRING_CLOUD_SENTINEL_TRANSPORT_PORT=8720
- AUTH_IP=${HOST_IP:-192.168.1.101}
- JAVA_OPTS=-Xms256m -Xmx512m
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9001/actuator/health"]
interval: 30s
timeout: 10s
retries: 3
depends_on:
nacos:
condition: service_healthy
mysql:
condition: service_healthy
redis:
condition: service_healthy
networks:
- ha-network
video-user:
build:
context: ./video-user
dockerfile: Dockerfile
container_name: video-user
restart: always
ports:
- "9002:9002"
- "8721:8721"
environment:
- SPRING_PROFILES_ACTIVE=ha
- NACOS_HOST=nacos
- NACOS_PORT=8848
- NACOS_USERNAME=nacos
- NACOS_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_USERNAME=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
- NACOS_SERVERS=${NACOS_SERVERS:-192.168.1.101:8848,192.168.1.102:8848,192.168.1.103:8848}
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_USERNAME=root
- MYSQL_PASSWORD=${MYSQL_ROOT_PASSWORD:-root123456}
- REDIS_PASSWORD=${REDIS_PASSWORD:-redis_HA_Cluster_2024}
- REDIS_SENTINEL_NODES=${REDIS_SENTINEL_NODES:-192.168.1.101:26379,192.168.1.102:26379,192.168.1.103:26379}
- MINIO_HOST=192.168.1.101
- MINIO_PORT=9100
- MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY}
- MINIO_SECRET_KEY=${MINIO_SECRET_KEY}
- MINIO_BUCKET=${MINIO_BUCKET}
- SERVICE_AUTH_TOKEN=${SERVICE_AUTH_TOKEN}
- USER_JWT_SECRET=${USER_JWT_SECRET}
- JWT_EXPIRATION=${JWT_EXPIRATION}
- SENTINEL_DASHBOARD_HOST=${HOST_IP:-192.168.1.101}
- SENTINEL_DASHBOARD_PORT=8880
- SPRING_CLOUD_SENTINEL_TRANSPORT_CLIENT_IP=${HOST_IP:-192.168.1.101}
- SPRING_CLOUD_SENTINEL_TRANSPORT_PORT=8721
- USER_IP=${HOST_IP:-192.168.1.101}
- JAVA_OPTS=-Xms256m -Xmx512m
depends_on:
nacos:
condition: service_healthy
mysql:
condition: service_healthy
redis:
condition: service_healthy
networks:
- ha-network
video-content:
build:
context: ./video-content
dockerfile: Dockerfile
container_name: video-content
restart: always
ports:
- "9003:9003"
- "8722:8722"
environment:
- SPRING_PROFILES_ACTIVE=ha
- NACOS_HOST=nacos
- NACOS_PORT=8848
- NACOS_USERNAME=nacos
- NACOS_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_USERNAME=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
- NACOS_SERVERS=${NACOS_SERVERS:-192.168.1.101:8848,192.168.1.102:8848,192.168.1.103:8848}
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_USERNAME=root
- MYSQL_PASSWORD=${MYSQL_ROOT_PASSWORD:-root123456}
- REDIS_PASSWORD=${REDIS_PASSWORD:-redis_HA_Cluster_2024}
- REDIS_SENTINEL_NODES=${REDIS_SENTINEL_NODES:-192.168.1.101:26379,192.168.1.102:26379,192.168.1.103:26379}
- ROCKETMQ_HOST=rmqnamesrv
- ROCKETMQ_PORT=9876
- MINIO_HOST=minio
- MINIO_PORT=9000
- MINIO_ACCESS_KEY=minioadmin
- MINIO_SECRET_KEY=minioadmin123
- MINIO_BUCKET=video-platform
- SERVICE_AUTH_TOKEN=${SERVICE_AUTH_TOKEN}
- USER_JWT_SECRET=${USER_JWT_SECRET}
- JWT_EXPIRATION=${JWT_EXPIRATION}
- SENTINEL_DASHBOARD_HOST=${HOST_IP:-192.168.1.101}
- SENTINEL_DASHBOARD_PORT=8880
- SPRING_CLOUD_SENTINEL_TRANSPORT_CLIENT_IP=${HOST_IP:-192.168.1.101}
- SPRING_CLOUD_SENTINEL_TRANSPORT_PORT=8722
- CONTENT_IP=${HOST_IP:-192.168.1.101}
- JAVA_OPTS=-Xms256m -Xmx512m
depends_on:
nacos:
condition: service_healthy
mysql:
condition: service_healthy
redis:
condition: service_healthy
rmqnamesrv:
condition: service_healthy
minio:
condition: service_healthy
networks:
- ha-network
video-comment:
build:
context: ./video-comment
dockerfile: Dockerfile
container_name: video-comment
restart: always
ports:
- "9004:9004"
- "8723:8723"
environment:
- SPRING_PROFILES_ACTIVE=ha
- NACOS_HOST=nacos
- NACOS_PORT=8848
- NACOS_USERNAME=nacos
- NACOS_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_USERNAME=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
- NACOS_SERVERS=${NACOS_SERVERS:-192.168.1.101:8848,192.168.1.102:8848,192.168.1.103:8848}
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_USERNAME=root
- MYSQL_PASSWORD=${MYSQL_ROOT_PASSWORD:-root123456}
- REDIS_PASSWORD=${REDIS_PASSWORD:-redis_HA_Cluster_2024}
- REDIS_SENTINEL_NODES=${REDIS_SENTINEL_NODES:-192.168.1.101:26379,192.168.1.102:26379,192.168.1.103:26379}
- SERVICE_AUTH_TOKEN=${SERVICE_AUTH_TOKEN}
- USER_JWT_SECRET=${USER_JWT_SECRET}
- JWT_EXPIRATION=${JWT_EXPIRATION}
- SENTINEL_DASHBOARD_HOST=${HOST_IP:-192.168.1.101}
- SENTINEL_DASHBOARD_PORT=8880
- SPRING_CLOUD_SENTINEL_TRANSPORT_CLIENT_IP=${HOST_IP:-192.168.1.101}
- SPRING_CLOUD_SENTINEL_TRANSPORT_PORT=8723
- COMMENT_IP=${HOST_IP:-192.168.1.101}
- JAVA_OPTS=-Xms256m -Xmx512m
depends_on:
nacos:
condition: service_healthy
mysql:
condition: service_healthy
redis:
condition: service_healthy
networks:
- ha-network
video-recommend:
build:
context: ./video-recommend
dockerfile: Dockerfile
container_name: video-recommend
restart: always
ports:
- "9005:9005"
- "8724:8724"
environment:
- SPRING_PROFILES_ACTIVE=ha
- NACOS_HOST=nacos
- NACOS_PORT=8848
- NACOS_USERNAME=nacos
- NACOS_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_USERNAME=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
- NACOS_SERVERS=${NACOS_SERVERS:-192.168.1.101:8848,192.168.1.102:8848,192.168.1.103:8848}
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_USERNAME=root
- MYSQL_PASSWORD=${MYSQL_ROOT_PASSWORD:-root123456}
- REDIS_PASSWORD=${REDIS_PASSWORD:-redis_HA_Cluster_2024}
- REDIS_SENTINEL_NODES=${REDIS_SENTINEL_NODES:-192.168.1.101:26379,192.168.1.102:26379,192.168.1.103:26379}
- SERVICE_AUTH_TOKEN=${SERVICE_AUTH_TOKEN}
- USER_JWT_SECRET=${USER_JWT_SECRET}
- JWT_EXPIRATION=${JWT_EXPIRATION}
- SENTINEL_DASHBOARD_HOST=${HOST_IP:-192.168.1.101}
- SENTINEL_DASHBOARD_PORT=8880
- SPRING_CLOUD_SENTINEL_TRANSPORT_CLIENT_IP=${HOST_IP:-192.168.1.101}
- SPRING_CLOUD_SENTINEL_TRANSPORT_PORT=8724
- RECOMMEND_IP=${HOST_IP:-192.168.1.101}
- JAVA_OPTS=-Xms256m -Xmx512m
depends_on:
nacos:
condition: service_healthy
mysql:
condition: service_healthy
redis:
condition: service_healthy
networks:
- ha-network
video-admin:
build:
context: ./video-admin
dockerfile: Dockerfile
container_name: video-admin
restart: always
ports:
- "9006:9006"
- "8725:8725"
environment:
- SPRING_PROFILES_ACTIVE=ha
- NACOS_HOST=nacos
- NACOS_PORT=8848
- NACOS_USERNAME=nacos
- NACOS_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_USERNAME=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
- NACOS_SERVERS=${NACOS_SERVERS:-192.168.1.101:8848,192.168.1.102:8848,192.168.1.103:8848}
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_USERNAME=root
- MYSQL_PASSWORD=${MYSQL_ROOT_PASSWORD:-root123456}
- REDIS_PASSWORD=${REDIS_PASSWORD:-redis_HA_Cluster_2024}
- REDIS_SENTINEL_NODES=${REDIS_SENTINEL_NODES:-192.168.1.101:26379,192.168.1.102:26379,192.168.1.103:26379}
- SERVICE_AUTH_TOKEN=${SERVICE_AUTH_TOKEN}
- ADMIN_JWT_SECRET=${ADMIN_JWT_SECRET}
- ADMIN_INIT_PASSWORD=${ADMIN_INIT_PASSWORD}
- JWT_EXPIRATION=${JWT_EXPIRATION}
- SENTINEL_DASHBOARD_HOST=${HOST_IP:-192.168.1.101}
- SENTINEL_DASHBOARD_PORT=8880
- SPRING_CLOUD_SENTINEL_TRANSPORT_CLIENT_IP=${HOST_IP:-192.168.1.101}
- SPRING_CLOUD_SENTINEL_TRANSPORT_PORT=8725
- ADMIN_IP=${HOST_IP:-192.168.1.101}
- JAVA_OPTS=-Xms256m -Xmx512m
depends_on:
nacos:
condition: service_healthy
mysql:
condition: service_healthy
redis:
condition: service_healthy
networks:
- ha-network
# ==================== 负载均衡 ====================
nginx:
image: nginx:alpine
container_name: nginx-lb
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./config/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./config/nginx/conf.d:/etc/nginx/conf.d:ro
- nginx_logs:/var/log/nginx
depends_on:
- video-gateway
networks:
- ha-network
networks:
ha-network:
driver: bridge
volumes:
mysql_data:
redis_data:
sentinel_data:
nacos_logs:
minio_data:
nginx_logs:
prometheus_data:
grafana_data: