97 lines
2.0 KiB
YAML
97 lines
2.0 KiB
YAML
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
|