/
Normalno100
/
PowerAssetIntelligence
Обзор
Документация
Войти
/
Normalno100
/
PowerAssetIntelligence
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
docker-compose.yml
198 строк
6 KB
Normalno100
feat(frontend): add frontend container to compose stack
26 май 2026, 20:23
26 май 2026, 20:23
f2c9059
Код
Авторство
О чём код?
name: power-asset-intelligence x-logging: &default-logging driver: "json-file" options: max-size: "10m" max-file: "5" services: postgres: image: postgres:16-alpine container_name: power-asset-postgres restart: unless-stopped environment: POSTGRES_DB: ${POSTGRES_DB:-power_asset_intelligence} POSTGRES_USER: ${POSTGRES_USER:-power_asset} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-power_asset} TZ: UTC ports: - "${POSTGRES_PORT:-5432}:5432" volumes: - postgres-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] interval: 10s timeout: 5s retries: 10 start_period: 20s logging: *default-logging kafka: image: ${KAFKA_IMAGE:-bitnamilegacy/kafka:3.7.0} container_name: power-asset-kafka restart: unless-stopped environment: KAFKA_CFG_NODE_ID: 1 KAFKA_CFG_PROCESS_ROLES: broker,controller KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 1@kafka:9093 KAFKA_CFG_LISTENERS: PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://:29092 KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,EXTERNAL://${KAFKA_EXTERNAL_HOST:-localhost}:29092 KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,EXTERNAL:PLAINTEXT KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: "false" KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 KAFKA_CFG_TRANSACTION_STATE_LOG_MIN_ISR: 1 KAFKA_CFG_LOG_RETENTION_HOURS: 168 ALLOW_PLAINTEXT_LISTENER: "yes" ports: - "${KAFKA_EXTERNAL_PORT:-29092}:29092" volumes: - kafka-data:/bitnami/kafka healthcheck: test: ["CMD-SHELL", "/opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --list >/dev/null 2>&1"] interval: 15s timeout: 10s retries: 10 start_period: 60s logging: *default-logging ml-service: build: context: ./ml-service container_name: power-asset-ml-service restart: unless-stopped environment: TZ: UTC ports: - "${ML_SERVICE_PORT:-8000}:8000" healthcheck: test: ["CMD-SHELL", "python -c \"import urllib.request; urllib.request.urlopen('http://localhost:8000/health')\""] interval: 15s timeout: 5s retries: 8 start_period: 20s logging: *default-logging app: build: context: . container_name: power-asset-api restart: unless-stopped depends_on: postgres: condition: service_healthy kafka: condition: service_healthy ml-service: condition: service_healthy environment: DB_URL: jdbc:postgresql://postgres:5432/${POSTGRES_DB:-power_asset_intelligence} DB_USERNAME: ${POSTGRES_USER:-power_asset} DB_PASSWORD: ${POSTGRES_PASSWORD:-power_asset} SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE:-docker} MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE: health,info,metrics,prometheus MANAGEMENT_ENDPOINT_HEALTH_SHOW_DETAILS: always KAFKA_BOOTSTRAP_SERVERS: kafka:9092 KAFKA_TELEMETRY_RAW_TOPIC: ${KAFKA_TELEMETRY_RAW_TOPIC:-telemetry.raw.v1} KAFKA_TELEMETRY_DLT_TOPIC: ${KAFKA_TELEMETRY_DLT_TOPIC:-telemetry.raw.v1.dlt} LOGGING_LEVEL_ROOT: ${LOGGING_LEVEL_ROOT:-INFO} ports: - "${APP_PORT:-8080}:8080" healthcheck: test: ["CMD-SHELL", "wget -qO- http://localhost:8080/actuator/health/readiness | grep -q UP"] interval: 20s timeout: 5s retries: 10 start_period: 45s logging: *default-logging prometheus: image: prom/prometheus:v2.54.1 container_name: power-asset-prometheus restart: unless-stopped command: - "--config.file=/etc/prometheus/prometheus.yml" - "--storage.tsdb.retention.time=14d" volumes: - ./ops/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro - prometheus-data:/prometheus ports: - "${PROMETHEUS_PORT:-9090}:9090" depends_on: app: condition: service_started logging: *default-logging loki: image: grafana/loki:3.1.1 container_name: power-asset-loki restart: unless-stopped command: ["-config.file=/etc/loki/local-config.yaml"] volumes: - ./ops/loki/loki-config.yml:/etc/loki/local-config.yaml:ro - loki-data:/loki ports: - "${LOKI_PORT:-3100}:3100" logging: *default-logging promtail: image: grafana/promtail:3.1.1 container_name: power-asset-promtail restart: unless-stopped command: ["-config.file=/etc/promtail/config.yml"] volumes: - /var/lib/docker/containers:/var/lib/docker/containers:ro - /var/run/docker.sock:/var/run/docker.sock - ./ops/promtail/promtail-config.yml:/etc/promtail/config.yml:ro depends_on: - loki logging: *default-logging frontend: build: context: ./frontend container_name: power-asset-frontend restart: unless-stopped depends_on: app: condition: service_started environment: TZ: UTC ports: - "${FRONTEND_PORT:-3001}:80" logging: *default-logging grafana: image: grafana/grafana:11.1.5 container_name: power-asset-grafana restart: unless-stopped environment: GF_SECURITY_ADMIN_USER: ${GRAFANA_USER:-admin} GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_PASSWORD:-admin} GF_USERS_DEFAULT_THEME: dark GF_INSTALL_PLUGINS: grafana-piechart-panel volumes: - grafana-data:/var/lib/grafana - ./ops/grafana/provisioning/datasources:/etc/grafana/provisioning/datasources:ro - ./ops/grafana/provisioning/dashboards:/etc/grafana/provisioning/dashboards:ro depends_on: - prometheus - loki ports: - "${GRAFANA_PORT:-3000}:3000" healthcheck: test: ["CMD-SHELL", "wget -qO- http://localhost:3000/api/health | grep -q ok"] interval: 20s timeout: 5s retries: 8 logging: *default-logging volumes: postgres-data: kafka-data: prometheus-data: grafana-data: loki-data: