version: '3.8' services: ppanel-api: image: "${REPO}/api:latest" ports: - "8080:8080" - "6160:6160" depends_on: - mysql - redis - jaeger volumes: - ../apps/api/etc:/app/etc ppanel-admin: image: "${REPO}/admin:latest" ports: - "8081:8081" - "6161:6161" depends_on: - mysql - redis - jaeger volumes: - ../apps/admin/etc:/app/etc ppanel-node: image: "${REPO}/node:latest" ports: - "8082:8082" - "6162:6162" depends_on: - mysql - redis - jaeger volumes: - ../apps/node/etc:/app/etc deploy: replicas: 2 ppanel-queue: image: "${REPO}/queue:latest" depends_on: - mysql - redis - jaeger volumes: - ../apps/queue/etc:/app/etc ppanel-scheduler: image: "${REPO}/scheduler:latest" depends_on: - mysql - redis - jaeger volumes: - ../apps/scheduler/etc:/app/etc # Infrastructure mysql: image: mysql:8.0 ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: pavR2$mX7*tQ MYSQL_DATABASE: ppanel volumes: - mysql_data:/var/lib/mysql - ../sql:/docker-entrypoint-initdb.d redis: image: redis:7-alpine ports: - "6379:6379" volumes: - redis_data:/data # Observability jaeger: image: jaegertracing/all-in-one:1.57 ports: - "16686:16686" - "4317:4317" - "4318:4318" - "14268:14268" environment: COLLECTOR_OTLP_ENABLED: "true" prometheus: image: prom/prometheus:v2.51.0 ports: - "9090:9090" volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml grafana: image: grafana/grafana:10.4.0 ports: - "3000:3000" environment: GF_SECURITY_ADMIN_PASSWORD: admin depends_on: - prometheus - jaeger volumes: mysql_data: redis_data: