version: '3.8' services: prometheus: image: prom/prometheus:v2.44.0 secrets: - basic_auth_admin_password volumes: - prometheus-data:/prometheus:rw configs: - source: prometheus_yml target: /etc/prometheus/prometheus.yml command: - "--config.file=/etc/prometheus/prometheus.yml" - "--storage.tsdb.path=/prometheus" - "--web.console.libraries=/usr/share/prometheus/console_libraries" - "--web.console.templates=/usr/share/prometheus/consoles" - "--storage.tsdb.retention.time=${PROMETHEUS_RETENTION_TIME}" networks: - proxy - internal deploy: restart_policy: condition: on-failure labels: - "traefik.enable=true" - "traefik.http.services.${STACK_NAME}-prometheus.loadbalancer.server.port=9090" - "traefik.http.routers.${STACK_NAME}-prometheus.rule=Host(`prometheus.${DOMAIN}`)" - "traefik.http.routers.${STACK_NAME}-prometheus.entrypoints=web-secure" - "traefik.http.routers.${STACK_NAME}-prometheus.tls=true" - "traefik.http.routers.${STACK_NAME}-prometheus.tls.certresolver=${LETS_ENCRYPT_ENV}" - "traefik.http.routers.${STACK_NAME}-prometheus.middlewares=basicauth@file" alertmanager: image: prom/alertmanager:v0.25.0 volumes: - alertmanager-data:/etc/alertmanager command: - "--config.file=/etc/alertmanager/config.yml" - "--storage.path=/alertmanager" networks: - internal secrets: - alertmanager_smtp_password configs: - source: alertmanager_config target: /etc/alertmanager/config.yml environment: - ALERTMANAGER_SMTP_FROM - ALERTMANAGER_SMTP_HOST - ALERTMANAGER_SMTP_TO configs: prometheus_yml: template_driver: golang name: ${STACK_NAME}_prometheus_yml_${PROMETHEUS_YML_VERSION} file: prometheus.yml.tmpl alertmanager_config: template_driver: golang name: ${STACK_NAME}_alertmanager_config_${ALERTMANAGER_CONFIG_VERSION} file: ./alertmanager.yml.tmpl volumes: prometheus-data: alertmanager-data: secrets: alertmanager_smtp_password: external: true name: ${STACK_NAME}_alertmanager_smtp_password_${SECRET_ALERTMANAGER_SMTP_PASSWORD_VERSION}