services: ssl-cert: image: alpine:latest@sha256:865b95f46d98cf867a156fe4a135ad3fe50d2056aa3f25ed31662dff6da4eb62 command: | sh -c "if [ ! -f /certs/nginx.crt ] || [ ! -f /certs/nginx.key ]; then apk add --no-cache openssl && mkdir -p /certs && openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /certs/nginx.key -out /certs/nginx.crt -subj '/C=US/ST=State/L=City/O=Organization/CN=localhost' && chmod 644 /certs/nginx.crt /certs/nginx.key else echo 'SSL certificates already exist, skipping generation' fi" volumes: - ../nginx:/certs # Grafana grafana: extends: file: ../../.config/docker-compose-base.yaml service: grafana volumes: - ../..:/grafana-zabbix - ../dashboards:/devenv/dashboards - '../datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yaml' - '../dashboards.yaml:/etc/grafana/provisioning/dashboards/dashboards.yaml' # Zabbix zabbix-server: image: zabbix/zabbix-server-pgsql:alpine-5.0-latest@sha256:b88c636ec3298529358914aa7fd04d3f7ae3da0eab261b405cb2a9fcb4fa5eae ports: - '10051:10051' depends_on: - database environment: DB_SERVER_HOST: database DB_SERVER_PORT: 5432 POSTGRES_USER: zabbix POSTGRES_PASSWORD: zabbix POSTGRES_DB: zabbix zabbix-web: image: zabbix/zabbix-web-nginx-pgsql:alpine-5.0-latest@sha256:90d9d85d42d46a4978091bd6deb405e6c8486fd53af5720a6f7a6135e6baaa4b ports: - '443:443' - '8188:8080' depends_on: ssl-cert: condition: service_completed_successfully database: condition: service_started zabbix-server: condition: service_started environment: ZBX_SERVER_HOST: zabbix-server ZBX_SERVER_PORT: 10051 DB_SERVER_HOST: database DB_SERVER_PORT: 5432 POSTGRES_USER: zabbix POSTGRES_PASSWORD: zabbix POSTGRES_DB: zabbix ZBX_SESSION_NAME: zbx_sessionid_new volumes: - ../nginx:/etc/nginx/ssl:ro - ../nginx/default.conf:/etc/nginx/http.d/default.conf:ro - ../nginx/.htpasswd:/etc/nginx/.htpasswd:ro database: image: postgres:18@sha256:5773fe724c49c42a7a9ca70202e11e1dff21fb7235b335a73f39297d200b73a2 ports: - '15432:5432' environment: POSTGRES_USER: zabbix POSTGRES_PASSWORD: zabbix zabbix-agent: image: zabbix/zabbix-agent:alpine-5.0-latest@sha256:c34ca68c3120b1918bceb394f2275f6aa67ddecce641a0033fdea5c84b89731d environment: ZBX_SERVER_HOST: zabbix-server ZBX_SERVER_PORT: 10051 zabbix-proxy: image: zabbix/zabbix-proxy-sqlite3:alpine-5.0-latest@sha256:a963b30b2e4352be890c93f599749d42a8e6a8e549629ccc6b30de437ecd4a5f environment: ZBX_PROXYMODE: 0 ZBX_HOSTNAME: zabbix-proxy ZBX_SERVER_HOST: zabbix-server ZBX_SERVER_PORT: 10051 zabbix-agent-proxy: image: zabbix/zabbix-agent:alpine-5.0-latest@sha256:c34ca68c3120b1918bceb394f2275f6aa67ddecce641a0033fdea5c84b89731d environment: ZBX_SERVER_HOST: zabbix-proxy ZBX_SERVER_PORT: 10051 ######################################################### # Bootstrap config ######################################################### bootstrap: build: context: ./bootstrap dockerfile: Dockerfile args: ZBX_HOSTS_NUMBER: 10 environment: ZBX_API_URL: http://zabbix-web:8080 ZBX_API_USER: Admin ZBX_API_PASSWORD: zabbix depends_on: - database - zabbix-server - zabbix-web ######################################################### # Fake agents ######################################################### # backend redis_backend: image: redis:alpine@sha256:6cbef353e480a8a6e7f10ec545f13d7d3fa85a212cdcc5ffaf5a1c818b9d3798 zas_backend_01: build: ../zas-agent volumes: - ../zas-agent/conf/zas_scenario_backend.cfg:/etc/zas_scenario.cfg environment: REDIS_HOST: redis_backend zas_backend_02: build: ../zas-agent volumes: - ../zas-agent/conf/zas_scenario_backend.cfg:/etc/zas_scenario.cfg environment: REDIS_HOST: redis_backend # frontend redis_frontend: image: redis:alpine@sha256:6cbef353e480a8a6e7f10ec545f13d7d3fa85a212cdcc5ffaf5a1c818b9d3798 zas_frontend_01: build: ../zas-agent volumes: - ../zas-agent/conf/zas_scenario_frontend.cfg:/etc/zas_scenario.cfg environment: REDIS_HOST: redis_frontend zas_frontend_02: build: ../zas-agent volumes: - ../zas-agent/conf/zas_scenario_frontend.cfg:/etc/zas_scenario.cfg environment: REDIS_HOST: redis_frontend