version: "3" volumes: database-data: pgadmin-data: redis-data: networks: app_network: external: false services: database: container_name: database image: postgres:14 restart: always volumes: - database-data:/var/lib/postgresql/data/ environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres networks: - app_network ports: - 5432:5432 pgadmin: container_name: pgadmin image: dpage/pgadmin4:8 restart: always environment: PGADMIN_DEFAULT_EMAIL: admin@example.com PGADMIN_DEFAULT_PASSWORD: admin PGADMIN_DISABLE_POSTFIX: "true" volumes: - pgadmin-data:/var/lib/pgadmin - ./pgadmin/servers.json:/pgadmin4/servers.json networks: - app_network ports: - 5480:80 depends_on: - database redis: container_name: redis image: redis:7 restart: always volumes: - redis-data:/data networks: - app_network ports: - 6379:6379 otel-collector: container_name: otel-collector image: otel/opentelemetry-collector-contrib:latest restart: always command: ["--config", "/etc/otel-collector-config.yaml"] volumes: - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml ports: - "55680:55680" - "55681:55681" - "4317:4317" # OTLP gRPC receiver - "4318:4318" # OTLP http receiver - "4319:4319" # OTLP internal http receiver environment: BASELIME_API_KEY: ${BASELIME_API_KEY} BASELIME_SERVICE: ${BASELIME_SERVICE}