version: "3.8" services: postgres: image: postgres:14.4 restart: always ports: - "5432:5432" environment: POSTGRES_DB: oncall_local_dev POSTGRES_PASSWORD: empty POSTGRES_INITDB_ARGS: --encoding=UTF-8 deploy: resources: limits: memory: 500m cpus: '0.5' healthcheck: test: ["CMD", "pg_isready", "-U", "postgres"] interval: 10s timeout: 5s retries: 5 redis: image: redis restart: always ports: - "6379:6379" deploy: resources: limits: memory: 100m cpus: '0.1' rabbit: image: "rabbitmq:3.7.15-management" environment: RABBITMQ_DEFAULT_USER: "rabbitmq" RABBITMQ_DEFAULT_PASS: "rabbitmq" RABBITMQ_DEFAULT_VHOST: "/" deploy: resources: limits: memory: 1000m cpus: '0.5' ports: - "15672:15672" - "5672:5672" postgres_to_create_grafana_db: image: postgres:14.4 command: bash -c "PGPASSWORD=empty psql -U postgres -h postgres -tc \"SELECT 1 FROM pg_database WHERE datname = 'grafana'\" | grep -q 1 || PGPASSWORD=empty psql -U postgres -h postgres -c \"CREATE DATABASE grafana\"" depends_on: postgres: condition: service_healthy grafana: image: "grafana/grafana:main" restart: always environment: GF_DATABASE_TYPE: postgres GF_DATABASE_HOST: postgres:5432 GF_DATABASE_NAME: grafana GF_DATABASE_USER: postgres GF_DATABASE_PASSWORD: empty GF_DATABASE_SSL_MODE: disable GF_SECURITY_ADMIN_USER: ${GRAFANA_USER:-admin} GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_PASSWORD:-admin} GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS: grafana-oncall-app GF_INSTALL_PLUGINS: grafana-oncall-app deploy: resources: limits: memory: 500m cpus: '0.5' volumes: - ./grafana-plugin:/var/lib/grafana/plugins/grafana-plugin ports: - "3000:3000" depends_on: postgres_to_create_grafana_db: condition: service_completed_successfully postgres: condition: service_healthy