version: "3.9" secrets: db_password: file: ./secrets/db_password.txt volumes: db-data: networks: sijago_net: driver: overlay monitoring_net: external: true # pastikan monitoring stack network sudah dibuat sebelumnya services: db: image: postgres:13 environment: POSTGRES_DB: sijago POSTGRES_USER: sijago_user POSTGRES_PASSWORD_FILE: /run/secrets/db_password volumes: - db-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U sijago_user"] interval: 5s timeout: 5s retries: 10 secrets: - db_password networks: - sijago_net deploy: restart_policy: condition: on-failure resources: limits: cpus: '0.5' memory: 512M redis: image: redis:7-alpine ports: - "6379:6379" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 5s retries: 5 networks: - sijago_net deploy: restart_policy: condition: on-failure resources: limits: cpus: '0.2' memory: 256M app: image: sijago_app:prod # build dulu: docker build -t sijago_app:prod -f Dockerfile.prod . working_dir: /var/www volumes: - .:/var/www:cached ports: - "8000:8000" environment: APP_ENV: production APP_DEBUG: "false" DB_CONNECTION: pgsql DB_HOST: db DB_PORT: 5432 DB_DATABASE: sijago DB_USERNAME: sijago_user DB_PASSWORD_FILE: /run/secrets/db_password CACHE_DRIVER: redis REDIS_HOST: redis PROMETHEUS_URL: http://prometheus:9090 CADVISOR_URL: http://cadvisor:8080 GRAFANA_URL: http://grafana:3000 secrets: - db_password networks: - sijago_net - monitoring_net deploy: restart_policy: condition: on-failure resources: limits: cpus: '1.0' memory: 512M reservations: cpus: '0.5' memory: 256M