setup/docker-compose.yml
2024-03-21 12:23:57 +01:00

128 lines
2.8 KiB
YAML

version: '2'
services:
frontend:
restart: always
image: demostf/frontend
container_name: frontend
environment:
- "SITE_URL=https://${HOST}/"
- "SITE_API=https://api.${HOST}/"
- "SITE_MAPS=https://maps.${HOST}/"
- "DATABASE_HOSTNAME=db"
- "DATABASE_USERNAME=postgres"
- "DATABASE_PASSWORD=${DB_PASSWORD}"
- "TRACING_ENDPOINT=${TRACING_ENDPOINT}"
- "TRACING_TLS_CERT_FILE=${TRACING_TLS_CERT_FILE}"
- "TRACING_TLS_KEY_FILE=${TRACING_TLS_KEY_FILE}"
networks:
- proxy-tier
- db-tier
depends_on:
- db
volumes:
- "./keys:/keys:ro"
api:
restart: always
image: demostf/api
container_name: api
environment:
- BASE_HOST=${HOST}
- DEMO_ROOT=/demos
- DEMO_HOST=static.$HOST
- DB_TYPE=pgsql
- DB_HOST=db
- DB_PORT=5432
- DB_DATABASE=postgres
- DB_USERNAME=postgres
- DB_PASSWORD=${DB_PASSWORD}
- APP_ROOT=https://api.$HOST
- EDIT_SECRET=${EDIT_SECRET}
- UPLOAD_KEY=${UPLOAD_KEY}
volumes:
- "${DEMO_ROOT}:/demos"
networks:
- proxy-tier
- db-tier
sync:
restart: always
image: demostf/sync
container_name: sync
mem_limit: 128m
networks:
- proxy-tier
maps:
restart: always
image: demostf/maps
container_name: maps
networks:
- proxy-tier
db:
restart: always
image: demostf/db
container_name: db
environment:
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_INITDB_ARGS="--no-locale"
volumes:
- "./db_data:/var/lib/postgresql/data"
networks:
- db-tier
db-refresh:
restart: always
image: demostf/postgres_refresh
container_name: db-refresh
environment:
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_HOST=db
- VIEWS=map_list name_list users_named
networks:
- db-tier
proxy:
restart: always
image: demostf/proxy
container_name: proxy
environment:
- HOST=$HOST
networks:
- proxy-tier
volumes:
- "${DEMO_ROOT}:/demos"
- logs:/logs
ports:
- "8080:80"
promtail:
image: grafana/promtail:latest
volumes:
- /etc/machine-id:/etc/machine-id
- logs:/logs:ro
- ./promtail.yml:/etc/promtail/promtail.yml
- ./promtail-positions:/positions
environment:
- LOKI_URL=${LOKI_URL}
- LOKI_USERNAME=${LOKI_USERNAME}
- LOKI_PASSWORD=${LOKI_PASSWORD}
command: -config.file=/etc/promtail/promtail.yml -config.expand-env=true
metrics:
image: ghcr.io/martin-helmich/prometheus-nginxlog-exporter/exporter:v1
networks:
- proxy-tier
volumes:
- logs:/logs:ro
- ./nginxlog.yaml:/nginxlog.yaml
command: -config-file=/nginxlog.yaml
networks:
proxy-tier:
db-tier:
volumes:
logs: