version: '3.1' services: reverse-proxy: image: traefik # The official Traefik docker image command: --api --docker # Enables the web UI and tells Traefik to listen to docker ports: - "3000:3000" # The HTTP port - "8080:8080" # The Web UI (enabled by --api) volumes: - /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events postgres: image: mdillon/postgis:11-alpine restart: always volumes: - db_data:/var/lib/postgresql/data environment: POSTGRES_PASSWORD: postgrespassword authentication: image: platyplus/authentication restart: always labels: - "traefik.frontend.rule=Host:auth.${DOMAIN}" - "traefik.port=8080" depends_on: - "postgres" environment: NODE_ENV: production DATABASE_URL: postgres://postgres:postgrespassword@postgres:5432/postgres AUTH_PRIVATE_KEY: "${PRIVATE_KEY}" AUTH_PUBLIC_KEY: "${PUBLIC_KEY}" graphql-engine: image: hasura/graphql-engine:v1.0.0-alpha37 labels: - "traefik.frontend.rule=Host:graphql.${DOMAIN}" - "traefik.port=8080" depends_on: - "postgres" restart: always environment: HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:postgrespassword@postgres:5432/postgres HASURA_GRAPHQL_ENABLE_CONSOLE: "${HASURA_ENABLE_CONSOLE}" HASURA_GRAPHQL_JWT_SECRET: "{\"type\":\"RS256\", \"key\":\"${PUBLIC_KEY}\"}" HASURA_GRAPHQL_ACCESS_KEY: "${HASURA_ACCESS_KEY}" volumes: db_data: