diff --git a/.gitignore b/.gitignore index bc20946..600adcb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /graphics .DS_Store -**/*.secret + **/*.pw +**/*.secret diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..4d5ee9c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,56 @@ +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: psql://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-internal + - 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-internal ] + + 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 + + +secrets: + crabfit database password: + file: ./postgres.pw + crabfit cron key: + file: ./cron.secret