|
|
|
@@ -0,0 +1,542 @@
|
|
|
|
|
name: haovp-1panel
|
|
|
|
|
|
|
|
|
|
x-common-env: &common-env
|
|
|
|
|
TZ: Asia/Shanghai
|
|
|
|
|
|
|
|
|
|
x-service-env: &service-env
|
|
|
|
|
<<: *common-env
|
|
|
|
|
SPRING_PROFILES_ACTIVE: ha
|
|
|
|
|
NACOS_HOST: nacos
|
|
|
|
|
NACOS_PORT: 8848
|
|
|
|
|
NACOS_USERNAME: ${NACOS_USERNAME:-nacos}
|
|
|
|
|
NACOS_PASSWORD: ${NACOS_PASSWORD:-nacos}
|
|
|
|
|
SPRING_CLOUD_NACOS_DISCOVERY_USERNAME: ${NACOS_USERNAME:-nacos}
|
|
|
|
|
SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD: ${NACOS_PASSWORD:-nacos}
|
|
|
|
|
SPRING_CLOUD_NACOS_CONFIG_USERNAME: ${NACOS_USERNAME:-nacos}
|
|
|
|
|
SPRING_CLOUD_NACOS_CONFIG_PASSWORD: ${NACOS_PASSWORD:-nacos}
|
|
|
|
|
MYSQL_HOST: mysql
|
|
|
|
|
MYSQL_PORT: 3306
|
|
|
|
|
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
|
|
|
|
MYSQL_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
|
|
|
|
REDIS_PASSWORD: ${REDIS_PASSWORD}
|
|
|
|
|
REDIS_SENTINEL_NODES: redis-sentinel:26379
|
|
|
|
|
SERVICE_AUTH_TOKEN: ${SERVICE_AUTH_TOKEN}
|
|
|
|
|
JWT_EXPIRATION: ${JWT_EXPIRATION:-86400}
|
|
|
|
|
SENTINEL_DASHBOARD_HOST: sentinel
|
|
|
|
|
SENTINEL_DASHBOARD_PORT: 8080
|
|
|
|
|
|
|
|
|
|
x-backend-build: &backend-build
|
|
|
|
|
context: .
|
|
|
|
|
dockerfile: Dockerfile.service.1panel
|
|
|
|
|
|
|
|
|
|
services:
|
|
|
|
|
mysql:
|
|
|
|
|
image: mysql:8.0
|
|
|
|
|
container_name: haovp-mysql
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
environment:
|
|
|
|
|
<<: *common-env
|
|
|
|
|
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
|
|
|
|
MYSQL_DATABASE: video_platform
|
|
|
|
|
MYSQL_USER: ${MYSQL_APP_USER:-video}
|
|
|
|
|
MYSQL_PASSWORD: ${MYSQL_APP_PASSWORD}
|
|
|
|
|
volumes:
|
|
|
|
|
- mysql_data:/var/lib/mysql
|
|
|
|
|
- ./sql/init.sql:/docker-entrypoint-initdb.d/01-init.sql:ro
|
|
|
|
|
- ./sql/nacos-schema.sql:/docker-entrypoint-initdb.d/02-nacos-schema.sql:ro
|
|
|
|
|
- ./sql/03-nacos-config-init.sh:/docker-entrypoint-initdb.d/03-nacos-config-init.sh:ro
|
|
|
|
|
- ./sql/nacos-config-init.sql:/init-sql/nacos-config-init.sql:ro
|
|
|
|
|
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-p${MYSQL_ROOT_PASSWORD}"]
|
|
|
|
|
interval: 10s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 15
|
|
|
|
|
networks:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
redis:
|
|
|
|
|
image: redis:7.0-alpine
|
|
|
|
|
container_name: haovp-redis
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
command: redis-server --requirepass ${REDIS_PASSWORD} --appendonly yes
|
|
|
|
|
volumes:
|
|
|
|
|
- redis_data:/data
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"]
|
|
|
|
|
interval: 10s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 10
|
|
|
|
|
networks:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
redis-sentinel:
|
|
|
|
|
image: redis:7.0-alpine
|
|
|
|
|
container_name: haovp-redis-sentinel
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
volumes:
|
|
|
|
|
- redis_sentinel_data:/data
|
|
|
|
|
- ./config/redis/sentinel-single.conf:/usr/local/etc/redis/sentinel.conf:ro
|
|
|
|
|
command: sh -c "sed \"s/__REDIS_PASSWORD__/${REDIS_PASSWORD}/g\" /usr/local/etc/redis/sentinel.conf > /data/sentinel.conf && redis-sentinel /data/sentinel.conf"
|
|
|
|
|
depends_on:
|
|
|
|
|
redis:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
nacos:
|
|
|
|
|
image: nacos/nacos-server:v2.3.2
|
|
|
|
|
container_name: haovp-nacos
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
environment:
|
|
|
|
|
<<: *common-env
|
|
|
|
|
MODE: standalone
|
|
|
|
|
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}
|
|
|
|
|
MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
|
|
|
|
JVM_XMS: ${NACOS_JVM_XMS:-512m}
|
|
|
|
|
JVM_XMX: ${NACOS_JVM_XMX:-512m}
|
|
|
|
|
NACOS_AUTH_ENABLE: "true"
|
|
|
|
|
NACOS_AUTH_TOKEN: ${NACOS_AUTH_TOKEN}
|
|
|
|
|
NACOS_AUTH_IDENTITY_KEY: serverIdentity
|
|
|
|
|
NACOS_AUTH_IDENTITY_VALUE: security
|
|
|
|
|
PREFER_HOST_MODE: hostname
|
|
|
|
|
ports:
|
|
|
|
|
- "${LOCAL_BIND_ADDR:-127.0.0.1}:${NACOS_HTTP_PORT:-8848}:8848"
|
|
|
|
|
depends_on:
|
|
|
|
|
mysql:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD", "curl", "-f", "http://localhost:8848/nacos/v1/console/health/liveness"]
|
|
|
|
|
interval: 10s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 15
|
|
|
|
|
networks:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
rmqnamesrv:
|
|
|
|
|
image: apache/rocketmq:5.1.4
|
|
|
|
|
container_name: haovp-rmqnamesrv
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
command: sh mqnamesrv
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD-SHELL", "pgrep -f 'NamesrvStartup' || exit 1"]
|
|
|
|
|
interval: 10s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 15
|
|
|
|
|
start_period: 30s
|
|
|
|
|
networks:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
rmqbroker:
|
|
|
|
|
image: apache/rocketmq:5.1.4
|
|
|
|
|
container_name: haovp-rmqbroker
|
|
|
|
|
user: root
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
environment:
|
|
|
|
|
NAMESRV_ADDR: rmqnamesrv:9876
|
|
|
|
|
JAVA_OPTS: -Duser.home=/opt
|
|
|
|
|
volumes:
|
|
|
|
|
- ./config/rocketmq/broker-1panel.conf:/home/rocketmq/rocketmq-5.1.4/conf/broker.conf:ro
|
|
|
|
|
- rmqbroker_logs:/home/rocketmq/logs
|
|
|
|
|
- rmqbroker_store:/home/rocketmq/store
|
|
|
|
|
command: sh mqbroker -c /home/rocketmq/rocketmq-5.1.4/conf/broker.conf
|
|
|
|
|
depends_on:
|
|
|
|
|
rmqnamesrv:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD-SHELL", "pgrep -f 'BrokerStartup' || exit 1"]
|
|
|
|
|
interval: 10s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 15
|
|
|
|
|
start_period: 30s
|
|
|
|
|
networks:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
minio:
|
|
|
|
|
image: quay.io/minio/minio
|
|
|
|
|
container_name: haovp-minio
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
environment:
|
|
|
|
|
<<: *common-env
|
|
|
|
|
MINIO_ROOT_USER: ${MINIO_ACCESS_KEY}
|
|
|
|
|
MINIO_ROOT_PASSWORD: ${MINIO_SECRET_KEY}
|
|
|
|
|
volumes:
|
|
|
|
|
- minio_data:/data
|
|
|
|
|
command: server /data --console-address ":9001"
|
|
|
|
|
ports:
|
|
|
|
|
- "${LOCAL_BIND_ADDR:-127.0.0.1}:${MINIO_API_PORT:-9100}:9000"
|
|
|
|
|
- "${LOCAL_BIND_ADDR:-127.0.0.1}:${MINIO_CONSOLE_PORT:-9101}:9001"
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
|
|
|
|
|
interval: 10s
|
|
|
|
|
timeout: 5s
|
|
|
|
|
retries: 10
|
|
|
|
|
networks:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
minio-init:
|
|
|
|
|
image: minio/mc
|
|
|
|
|
container_name: haovp-minio-init
|
|
|
|
|
restart: "no"
|
|
|
|
|
depends_on:
|
|
|
|
|
minio:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
entrypoint: >
|
|
|
|
|
/bin/sh -c "
|
|
|
|
|
mc alias set local http://minio:9000 '${MINIO_ACCESS_KEY}' '${MINIO_SECRET_KEY}' &&
|
|
|
|
|
mc mb --ignore-existing local/${MINIO_BUCKET:-video-platform} &&
|
|
|
|
|
mc anonymous set download local/${MINIO_BUCKET:-video-platform}
|
|
|
|
|
"
|
|
|
|
|
networks:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
sentinel:
|
|
|
|
|
build:
|
|
|
|
|
context: ./sentinel-dashboard
|
|
|
|
|
dockerfile: Dockerfile
|
|
|
|
|
image: haovp/sentinel-dashboard:1.8.6
|
|
|
|
|
container_name: haovp-sentinel
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
environment:
|
|
|
|
|
<<: *common-env
|
|
|
|
|
SERVER_PORT: 8080
|
|
|
|
|
ports:
|
|
|
|
|
- "${LOCAL_BIND_ADDR:-127.0.0.1}:${SENTINEL_HTTP_PORT:-8880}:8080"
|
|
|
|
|
networks:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
video-gateway:
|
|
|
|
|
build:
|
|
|
|
|
<<: *backend-build
|
|
|
|
|
args:
|
|
|
|
|
MODULE: video-gateway
|
|
|
|
|
JAR_PREFIX: video-gateway
|
|
|
|
|
image: haovp/video-gateway:1panel
|
|
|
|
|
container_name: haovp-video-gateway
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
environment:
|
|
|
|
|
<<: *service-env
|
|
|
|
|
JWT_SECRET: ${USER_JWT_SECRET}
|
|
|
|
|
USER_JWT_SECRET: ${USER_JWT_SECRET}
|
|
|
|
|
GATEWAY_IGNORE_URLS: /**/auth/login,/**/auth/register,/**/auth/captcha,/**/auth/refresh,/auth/username/**,/content/video/public/**,/content/category/tree,/content/category/list,/content/tag/list,/content/tag/page,/content/danmaku/all/**,/content/danmaku/time,/content/stat/**,/user/profile/public/**,/user/profile/search,/user/follow/following/**,/user/follow/followers/**,/comment/reply/public/**,/comment/public/**,/recommend/home,/recommend/hot/**,/recommend/similar/**,/recommend/tag/**,/admin/auth/captcha,/admin/auth/login
|
|
|
|
|
JAVA_OPTS: ${GATEWAY_JAVA_OPTS:--Xms128m -Xmx256m}
|
|
|
|
|
ports:
|
|
|
|
|
- "${LOCAL_BIND_ADDR:-127.0.0.1}:${GATEWAY_HTTP_PORT:-9000}:9000"
|
|
|
|
|
depends_on:
|
|
|
|
|
nacos:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
redis-sentinel:
|
|
|
|
|
condition: service_started
|
|
|
|
|
networks:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
video-auth:
|
|
|
|
|
build:
|
|
|
|
|
<<: *backend-build
|
|
|
|
|
args:
|
|
|
|
|
MODULE: video-auth
|
|
|
|
|
JAR_PREFIX: video-auth
|
|
|
|
|
image: haovp/video-auth:1panel
|
|
|
|
|
container_name: haovp-video-auth
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
environment:
|
|
|
|
|
<<: *service-env
|
|
|
|
|
JWT_SECRET: ${USER_JWT_SECRET}
|
|
|
|
|
USER_JWT_SECRET: ${USER_JWT_SECRET}
|
|
|
|
|
JAVA_OPTS: ${AUTH_JAVA_OPTS:--Xms128m -Xmx256m}
|
|
|
|
|
depends_on:
|
|
|
|
|
nacos:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
mysql:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
redis-sentinel:
|
|
|
|
|
condition: service_started
|
|
|
|
|
networks:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
video-user:
|
|
|
|
|
build:
|
|
|
|
|
<<: *backend-build
|
|
|
|
|
args:
|
|
|
|
|
MODULE: video-user
|
|
|
|
|
JAR_PREFIX: video-user
|
|
|
|
|
image: haovp/video-user:1panel
|
|
|
|
|
container_name: haovp-video-user
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
environment:
|
|
|
|
|
<<: *service-env
|
|
|
|
|
MINIO_HOST: minio
|
|
|
|
|
MINIO_PORT: 9000
|
|
|
|
|
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY}
|
|
|
|
|
MINIO_SECRET_KEY: ${MINIO_SECRET_KEY}
|
|
|
|
|
MINIO_BUCKET: ${MINIO_BUCKET:-video-platform}
|
|
|
|
|
JWT_SECRET: ${USER_JWT_SECRET}
|
|
|
|
|
USER_JWT_SECRET: ${USER_JWT_SECRET}
|
|
|
|
|
JAVA_OPTS: ${USER_JAVA_OPTS:--Xms128m -Xmx256m}
|
|
|
|
|
depends_on:
|
|
|
|
|
nacos:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
mysql:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
redis-sentinel:
|
|
|
|
|
condition: service_started
|
|
|
|
|
minio:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
video-content:
|
|
|
|
|
build:
|
|
|
|
|
<<: *backend-build
|
|
|
|
|
args:
|
|
|
|
|
MODULE: video-content
|
|
|
|
|
JAR_PREFIX: video-content
|
|
|
|
|
INSTALL_FFMPEG: "true"
|
|
|
|
|
image: haovp/video-content:1panel
|
|
|
|
|
container_name: haovp-video-content
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
environment:
|
|
|
|
|
<<: *service-env
|
|
|
|
|
NAMESRV_ADDR: rmqnamesrv:9876
|
|
|
|
|
ROCKETMQ_HOST: rmqnamesrv
|
|
|
|
|
ROCKETMQ_PORT: 9876
|
|
|
|
|
MINIO_HOST: minio
|
|
|
|
|
MINIO_PORT: 9000
|
|
|
|
|
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY}
|
|
|
|
|
MINIO_SECRET_KEY: ${MINIO_SECRET_KEY}
|
|
|
|
|
MINIO_BUCKET: ${MINIO_BUCKET:-video-platform}
|
|
|
|
|
JWT_SECRET: ${USER_JWT_SECRET}
|
|
|
|
|
USER_JWT_SECRET: ${USER_JWT_SECRET}
|
|
|
|
|
JAVA_OPTS: ${CONTENT_JAVA_OPTS:--Xms256m -Xmx512m}
|
|
|
|
|
depends_on:
|
|
|
|
|
nacos:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
mysql:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
redis-sentinel:
|
|
|
|
|
condition: service_started
|
|
|
|
|
rmqbroker:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
minio:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
video-comment:
|
|
|
|
|
build:
|
|
|
|
|
<<: *backend-build
|
|
|
|
|
args:
|
|
|
|
|
MODULE: video-comment
|
|
|
|
|
JAR_PREFIX: video-comment
|
|
|
|
|
image: haovp/video-comment:1panel
|
|
|
|
|
container_name: haovp-video-comment
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
environment:
|
|
|
|
|
<<: *service-env
|
|
|
|
|
JWT_SECRET: ${USER_JWT_SECRET}
|
|
|
|
|
USER_JWT_SECRET: ${USER_JWT_SECRET}
|
|
|
|
|
JAVA_OPTS: ${COMMENT_JAVA_OPTS:--Xms128m -Xmx256m}
|
|
|
|
|
depends_on:
|
|
|
|
|
nacos:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
mysql:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
redis-sentinel:
|
|
|
|
|
condition: service_started
|
|
|
|
|
networks:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
video-recommend:
|
|
|
|
|
build:
|
|
|
|
|
<<: *backend-build
|
|
|
|
|
args:
|
|
|
|
|
MODULE: video-recommend
|
|
|
|
|
JAR_PREFIX: video-recommend
|
|
|
|
|
image: haovp/video-recommend:1panel
|
|
|
|
|
container_name: haovp-video-recommend
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
environment:
|
|
|
|
|
<<: *service-env
|
|
|
|
|
JWT_SECRET: ${USER_JWT_SECRET}
|
|
|
|
|
USER_JWT_SECRET: ${USER_JWT_SECRET}
|
|
|
|
|
JAVA_OPTS: ${RECOMMEND_JAVA_OPTS:--Xms128m -Xmx256m}
|
|
|
|
|
depends_on:
|
|
|
|
|
nacos:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
mysql:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
redis-sentinel:
|
|
|
|
|
condition: service_started
|
|
|
|
|
networks:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
video-admin:
|
|
|
|
|
build:
|
|
|
|
|
<<: *backend-build
|
|
|
|
|
args:
|
|
|
|
|
MODULE: video-admin
|
|
|
|
|
JAR_PREFIX: video-admin
|
|
|
|
|
image: haovp/video-admin:1panel
|
|
|
|
|
container_name: haovp-video-admin
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
environment:
|
|
|
|
|
<<: *service-env
|
|
|
|
|
JWT_SECRET: ${ADMIN_JWT_SECRET}
|
|
|
|
|
ADMIN_JWT_SECRET: ${ADMIN_JWT_SECRET}
|
|
|
|
|
ADMIN_INIT_PASSWORD: ${ADMIN_INIT_PASSWORD}
|
|
|
|
|
APP_INIT_ADMIN_PASSWORD: ${ADMIN_INIT_PASSWORD}
|
|
|
|
|
JAVA_OPTS: ${ADMIN_JAVA_OPTS:--Xms128m -Xmx256m}
|
|
|
|
|
depends_on:
|
|
|
|
|
nacos:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
mysql:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
redis-sentinel:
|
|
|
|
|
condition: service_started
|
|
|
|
|
networks:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
frontend-web:
|
|
|
|
|
build:
|
|
|
|
|
context: ../frontend/video-frontend-web
|
|
|
|
|
dockerfile: Dockerfile.1panel
|
|
|
|
|
args:
|
|
|
|
|
VITE_API_BASE_URL: /api
|
|
|
|
|
VITE_MEDIA_BASE_URL: /media/video-platform
|
|
|
|
|
image: haovp/frontend-web:1panel
|
|
|
|
|
container_name: haovp-frontend-web
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
ports:
|
|
|
|
|
- "${FRONTEND_BIND_ADDR:-127.0.0.1}:${WEB_HTTP_PORT:-18080}:80"
|
|
|
|
|
depends_on:
|
|
|
|
|
- video-gateway
|
|
|
|
|
- minio
|
|
|
|
|
networks:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
frontend-admin:
|
|
|
|
|
build:
|
|
|
|
|
context: ../frontend/video-frontend-admin
|
|
|
|
|
dockerfile: Dockerfile.1panel
|
|
|
|
|
args:
|
|
|
|
|
VITE_API_BASE_URL: /api/admin
|
|
|
|
|
VITE_MEDIA_BASE_URL: /media/video-platform
|
|
|
|
|
image: haovp/frontend-admin:1panel
|
|
|
|
|
container_name: haovp-frontend-admin
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
ports:
|
|
|
|
|
- "${FRONTEND_BIND_ADDR:-127.0.0.1}:${ADMIN_HTTP_PORT:-18081}:80"
|
|
|
|
|
depends_on:
|
|
|
|
|
- video-gateway
|
|
|
|
|
- minio
|
|
|
|
|
networks:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
prometheus:
|
|
|
|
|
image: prom/prometheus:v2.54.1
|
|
|
|
|
container_name: haovp-prometheus
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
profiles:
|
|
|
|
|
- monitoring
|
|
|
|
|
ports:
|
|
|
|
|
- "${LOCAL_BIND_ADDR:-127.0.0.1}:${PROMETHEUS_HTTP_PORT:-9090}:9090"
|
|
|
|
|
volumes:
|
|
|
|
|
- ./monitoring/prometheus/prometheus.local.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:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
grafana:
|
|
|
|
|
image: grafana/grafana:11.2.0
|
|
|
|
|
container_name: haovp-grafana
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
profiles:
|
|
|
|
|
- monitoring
|
|
|
|
|
ports:
|
|
|
|
|
- "${LOCAL_BIND_ADDR:-127.0.0.1}:${GRAFANA_HTTP_PORT:-3000}:3000"
|
|
|
|
|
environment:
|
|
|
|
|
<<: *common-env
|
|
|
|
|
GF_SECURITY_ADMIN_USER: ${GRAFANA_ADMIN_USER:-admin}
|
|
|
|
|
GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_ADMIN_PASSWORD}
|
|
|
|
|
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:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
mysqld-exporter:
|
|
|
|
|
image: prom/mysqld-exporter:v0.16.0
|
|
|
|
|
container_name: haovp-mysqld-exporter
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
profiles:
|
|
|
|
|
- monitoring
|
|
|
|
|
environment:
|
|
|
|
|
MYSQLD_EXPORTER_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
|
|
|
|
command:
|
|
|
|
|
- --mysqld.address=mysql:3306
|
|
|
|
|
- --mysqld.username=root
|
|
|
|
|
depends_on:
|
|
|
|
|
mysql:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
redis-exporter:
|
|
|
|
|
image: oliver006/redis_exporter:v1.62.0
|
|
|
|
|
container_name: haovp-redis-exporter
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
profiles:
|
|
|
|
|
- monitoring
|
|
|
|
|
environment:
|
|
|
|
|
REDIS_ADDR: redis://redis:6379
|
|
|
|
|
REDIS_PASSWORD: ${REDIS_PASSWORD}
|
|
|
|
|
depends_on:
|
|
|
|
|
redis:
|
|
|
|
|
condition: service_healthy
|
|
|
|
|
networks:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
node-exporter:
|
|
|
|
|
image: prom/node-exporter:v1.8.2
|
|
|
|
|
container_name: haovp-node-exporter
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
profiles:
|
|
|
|
|
- monitoring
|
|
|
|
|
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:
|
|
|
|
|
- haovp-network
|
|
|
|
|
|
|
|
|
|
networks:
|
|
|
|
|
haovp-network:
|
|
|
|
|
driver: bridge
|
|
|
|
|
|
|
|
|
|
volumes:
|
|
|
|
|
mysql_data:
|
|
|
|
|
redis_data:
|
|
|
|
|
redis_sentinel_data:
|
|
|
|
|
minio_data:
|
|
|
|
|
rmqbroker_logs:
|
|
|
|
|
rmqbroker_store:
|
|
|
|
|
prometheus_data:
|
|
|
|
|
grafana_data:
|