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