crabfit/docker-compose.yml
2025-05-08 08:47:13 -04:00

63 lines
1.8 KiB
YAML

services:
crabfit-api:
build:
context: ./api
# args:
# adaptor: sql-adaptor (default) | memory-adaptor | datastore-adaptor
# # datastore is for Google Datastore
secrets:
- crabfit-database-password
- crabfit-cron-key
environment:
DATABASE_PASSWORD_FILE: /run/secrets/crabfit-database-password
DATABASE_URL: postgresql://crabfit@crabfit-database:5432/crabfit
FRONTEND_URL: https://availability.techwork.zone
CRON_KEY_FILE: /run/secrets/crabfit-cron-key
labels:
traefik.enable: true
traefik.http.routers.crabfit-api.rule: Host(`api.a10y.techwork.zone`)
traefik.http.routers.crabfit-api.tls: true
traefik.http.routers.crabfit-api.tls.certresolver: letsencrypt_standalone
networks:
- crabfit
- public
crabfit-database:
image: postgres:17
secrets: [ 'crabfit-database-password' ]
environment:
POSTGRES_PASSWORD_FILE: /run/secrets/crabfit-database-password
POSTGRES_USER: crabfit
POSTGRES_DB: crabfit
volumes:
./mounts/database:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready"]
interval: 30s
timeout: 20s
retries: 3
networks: [ crabfit ]
crabfit-frontend:
build:
context: ./frontend
labels:
traefik.enable: true
traefik.http.routers.crabfit-frontend.rule: (Host(`a10y.techwork.zone`) || Host(`availability.techwork.zone`))
traefik.http.routers.crabfit-frontend.tls: true
traefik.http.routers.crabfit-frontend.tls.certresolver: letsencrypt_standalone
environment:
NEXT_PUBLIC_API_URL: https://api.a10y.techwork.zone
networks: [ public ]
networks:
crabfit:
internal: true
secrets:
crabfit-database-password:
file: ./postgres.pw
crabfit-cron-key:
file: ./cron.secret