version: '3' services: db: image: postgres restart: always environment: POSTGRES_DB: bc POSTGRES_USER: bc POSTGRES_PASSWORD: bc healthcheck: interval: 10s retries: 10 test: [ 'CMD-SHELL', 'pg_isready', '-U', '${POSTGRES_USER}', '-P', '${POSTGRES_PASSWORD}' ] timeout: 45s volumes: - ./pg.sql:/docker-entrypoint-initdb.d/pg.sql nodejs: image: brokencrystals container_name: nodejs restart: always deploy: restart_policy: condition: on-failure resources: limits: cpus: 3.5 logging: options: max-file: '5' max-size: '10m' depends_on: - db - keycloak watchtower: image: containrrr/watchtower restart: always logging: options: max-file: '5' max-size: '10m' volumes: - /var/run/docker.sock:/var/run/docker.sock command: --interval 300 --debug keycloak-db: image: 'postgres:12.2-alpine' environment: POSTGRES_DB: keycloak POSTGRES_USER: keycloak POSTGRES_PASSWORD: password healthcheck: interval: 10s retries: 10 test: [ 'CMD-SHELL', 'pg_isready', '-U', '${POSTGRES_USER}', '-P', '${POSTGRES_PASSWORD}' ] timeout: 45s restart: on-failure stdin_open: true tty: true volumes: - './keycloak/db:/var/lib/postgresql/data/' keycloak: image: jboss/keycloak:latest volumes: - './keycloak/imports/realm-export.json:/opt/jboss/keycloak/imports/realm-export.json' environment: DB_VENDOR: POSTGRES DB_ADDR: keycloak-db DB_DATABASE: keycloak DB_USER: keycloak DB_SCHEMA: public DB_PASSWORD: password KEYCLOAK_USER: admin KEYCLOAK_PASSWORD: Pa55w0rd KEYCLOAK_IMPORT: /opt/jboss/keycloak/imports/realm-export.json -Dkeycloak.profile.feature.upload_scripts=enabled PROXY_ADDRESS_FORWARDING: 'true' KEYCLOAK_FRONTEND_URL: 'https://auth.qa.brokencrystals.com/auth/' healthcheck: test: ['CMD', 'curl', '-f', 'http://localhost:8080/auth/realms/master'] timeout: 10s interval: 30s retries: 3 depends_on: - keycloak-db mailcatcher: image: sj26/mailcatcher container_name: mailcatcher restart: always ports: - '1080:1080' - '1025:1025' logging: options: max-file: '5' max-size: '10m' volumes: letsencrypt: