# Standalone stack (без profiles): Portainer / `docker compose -f stack.microvps-full.yaml up -d` # Эквивалент microvps-full из docker-compose.yaml + docker-compose.microvps-full.yaml, # с встроенными configs для Prometheus (как у вас). # # Postgres: shm_size + start_period — иначе часто «dependency postgres failed» на слабом хосте. name: evobgp-microvps-full configs: prometheus_yml: content: | global: scrape_interval: 15s evaluation_interval: 15s rule_files: - /etc/prometheus/alerts.yml scrape_configs: - job_name: evobgp-all metrics_path: /metrics static_configs: - targets: ["evobgp-all:8080"] prometheus_alerts_yml: content: | groups: [] services: postgres: image: postgres:16-alpine restart: unless-stopped shm_size: "256mb" environment: POSTGRES_USER: evobgp POSTGRES_PASSWORD: evobgp POSTGRES_DB: evobgp volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U evobgp -d evobgp"] interval: 10s timeout: 5s retries: 12 start_period: 45s logging: driver: json-file options: max-size: "10m" max-file: "3" nats: image: nats:2.10-alpine restart: unless-stopped command: ["-js", "-m", "8222"] ports: - "4222:4222" logging: driver: json-file options: max-size: "10m" max-file: "3" bird2: image: git.shts.su/denozord/evobgp-bird2:latest restart: unless-stopped cap_add: - NET_ADMIN sysctls: net.ipv4.ip_forward: "1" net.ipv6.conf.all.forwarding: "1" volumes: - bird_etc:/etc/bird - bird_run:/run/bird ports: - "179:179/tcp" logging: driver: json-file options: max-size: "10m" max-file: "3" evobgp-agent: image: git.shts.su/denozord/evobgp-agent:latest restart: unless-stopped depends_on: bird2: condition: service_started cap_add: - NET_ADMIN volumes: - bird_etc:/etc/bird - bird_run:/run/bird entrypoint: ["/usr/local/bin/evobgp-agent"] command: ["watch", "-socket=/run/bird/bird.ctl", "-watch-interval=30s"] logging: driver: json-file options: max-size: "10m" max-file: "3" evobgp-all: image: git.shts.su/denozord/evobgp-all:latest restart: unless-stopped depends_on: postgres: condition: service_healthy nats: condition: service_started bird2: condition: service_started ports: - "8080:8080" environment: EVOBGP_DATABASE_URL: postgres://evobgp:evobgp@postgres:5432/evobgp?sslmode=disable EVOBGP_BROKER_URL: nats://nats:4222 EVOBGP_HTTP_ADDR: ":8080" EVOBGP_SEED_DEMO: "1" EVOBGP_BIRDC_SOCKET: /run/bird/bird.ctl EVOBGP_BIRDC_INTERVAL: 30s EVOBGP_BIRD_ACTIVE_DIR: /etc/bird EVOBGP_BIRD_STAGING_DIR: /tmp/evobgp-bird-staging EVOBGP_DEV_INSECURE: "1" volumes: - bird_etc:/etc/bird - bird_run:/run/bird:ro logging: driver: json-file options: max-size: "10m" max-file: "3" evobgp-web: image: git.shts.su/denozord/evobgp-web-all:latest restart: unless-stopped depends_on: evobgp-all: condition: service_started ports: - "3000:80" logging: driver: json-file options: max-size: "10m" max-file: "3" prometheus: image: prom/prometheus:v2.54.1 restart: unless-stopped depends_on: evobgp-all: condition: service_started ports: - "9090:9090" configs: - source: prometheus_yml target: /etc/prometheus/prometheus.yml - source: prometheus_alerts_yml target: /etc/prometheus/alerts.yml command: - --config.file=/etc/prometheus/prometheus.yml - --storage.tsdb.path=/prometheus - --storage.tsdb.retention.time=7d - --web.enable-lifecycle logging: driver: json-file options: max-size: "10m" max-file: "3" volumes: pgdata: bird_etc: bird_run: