173 lines
4.6 KiB
YAML
173 lines
4.6 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
mysql:
|
|
image: mysql:8.0.36
|
|
container_name: mci-mysql
|
|
profiles: ["infra"]
|
|
restart: unless-stopped
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root}
|
|
MYSQL_DATABASE: ${MYSQL_DATABASE:-sino_mci}
|
|
ports:
|
|
- "${MYSQL_PORT:-3306}:3306"
|
|
volumes:
|
|
- mci-mysql-data:/var/lib/mysql
|
|
networks:
|
|
- mci-network
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "mysqladmin ping -h localhost -u root -p\"$${MYSQL_ROOT_PASSWORD}\" || exit 1"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 20
|
|
start_period: 30s
|
|
|
|
redis:
|
|
image: redis:7.2
|
|
container_name: mci-redis
|
|
profiles: ["infra"]
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${REDIS_PORT:-6379}:6379"
|
|
networks:
|
|
- mci-network
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
start_period: 10s
|
|
|
|
rabbitmq:
|
|
image: rabbitmq:3.13-management
|
|
container_name: mci-rabbitmq
|
|
profiles: ["infra"]
|
|
restart: unless-stopped
|
|
environment:
|
|
RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER:-guest}
|
|
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS:-guest}
|
|
ports:
|
|
- "${RABBITMQ_AMQP_PORT:-5672}:5672"
|
|
- "${RABBITMQ_MGMT_PORT:-15672}:15672"
|
|
networks:
|
|
- mci-network
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "rabbitmq-diagnostics ping || exit 1"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 15
|
|
start_period: 30s
|
|
|
|
seaweedfs:
|
|
image: chrislusf/seaweedfs:3.62
|
|
container_name: mci-seaweedfs
|
|
profiles: ["infra"]
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${SEAWEEDFS_MASTER_PORT:-9333}:9333"
|
|
- "${SEAWEEDFS_S3_PORT:-8888}:8888"
|
|
command: server -dir=/data
|
|
volumes:
|
|
- mci-seaweedfs-data:/data
|
|
networks:
|
|
- mci-network
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "wget -qO- http://localhost:9333/cluster/status >/dev/null 2>&1 || exit 1"]
|
|
interval: 15s
|
|
timeout: 10s
|
|
retries: 8
|
|
start_period: 60s
|
|
|
|
mci-server:
|
|
build:
|
|
context: ./backend/mci-server
|
|
dockerfile: Dockerfile
|
|
container_name: mci-server
|
|
profiles: ["app"]
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${MCI_SERVER_PORT:-8080}:8080"
|
|
environment:
|
|
- SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE:-dev}
|
|
- SPRING_DATASOURCE_URL=jdbc:mysql://mci-mysql:3306/${MYSQL_DATABASE:-sino_mci}?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true
|
|
- SPRING_DATASOURCE_USERNAME=${MYSQL_USER:-root}
|
|
- SPRING_DATASOURCE_PASSWORD=${MYSQL_ROOT_PASSWORD:-root}
|
|
- SPRING_DATA_REDIS_HOST=mci-redis
|
|
- SPRING_DATA_REDIS_PORT=6379
|
|
- SPRING_RABBITMQ_HOST=mci-rabbitmq
|
|
- SPRING_RABBITMQ_PORT=5672
|
|
- SPRING_RABBITMQ_USERNAME=${RABBITMQ_DEFAULT_USER:-guest}
|
|
- SPRING_RABBITMQ_PASSWORD=${RABBITMQ_DEFAULT_PASS:-guest}
|
|
- JAVA_OPTS=${JAVA_OPTS:--XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0}
|
|
- OPENAI_API_KEY=${OPENAI_API_KEY:-}
|
|
networks:
|
|
- mci-network
|
|
depends_on:
|
|
mysql:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
rabbitmq:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-fsS", "http://localhost:8080/msg-platform/api/v1/health"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 15
|
|
start_period: 90s
|
|
|
|
admin-web:
|
|
build:
|
|
context: ./admin-web
|
|
dockerfile: Dockerfile
|
|
container_name: mci-admin-web
|
|
profiles: ["app"]
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${ADMIN_WEB_PORT:-80}:80"
|
|
networks:
|
|
- mci-network
|
|
depends_on:
|
|
mci-server:
|
|
condition: service_healthy
|
|
|
|
channel-service:
|
|
build:
|
|
context: ./channel-service
|
|
dockerfile: Dockerfile
|
|
container_name: mci-channel-service
|
|
profiles: ["app"]
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${CHANNEL_SERVICE_PORT:-8000}:8000"
|
|
environment:
|
|
- MCI_SERVER_URL=http://mci-server:8080/msg-platform
|
|
- EVENT_STORE_PATH=/app/data/events.db
|
|
- MAX_RETRY=5
|
|
- BASE_RETRY_DELAY_SECONDS=5
|
|
- EVENT_RETENTION_DAYS=10
|
|
- EVENT_PUBLISH_INTERVAL_SECONDS=5
|
|
- OPENAI_API_KEY=${OPENAI_API_KEY:-}
|
|
volumes:
|
|
- channel-service-data:/app/data
|
|
networks:
|
|
- mci-network
|
|
depends_on:
|
|
mci-server:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-fsS", "http://localhost:8000/health"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 10
|
|
start_period: 30s
|
|
|
|
volumes:
|
|
mci-mysql-data:
|
|
mci-seaweedfs-data:
|
|
channel-service-data:
|
|
|
|
networks:
|
|
mci-network:
|
|
driver: bridge
|