networks: legalconsenthub-net: driver: bridge volumes: legalconsenthub_postgres_data: keycloak_postgres_data: legalconsenthub_pdf_cache: services: backend: image: gitea.lugnas.de/denis/legalconsenthub-backend:latest container_name: legalconsenthub-backend restart: on-failure:2 environment: LOGGING_LEVEL_ROOT: ${LOGGING_LEVEL_ROOT:-WARN} LOGGING_LEVEL_APP: ${LOGGING_LEVEL_APP:-WARN} LEGALCONSENTHUB_DB_URL: jdbc:postgresql://legalconsenthub-db:5432/${LEGALCONSENTHUB_POSTGRES_DB} LEGALCONSENTHUB_DB_APP_USER: ${LEGALCONSENTHUB_POSTGRES_USER} LEGALCONSENTHUB_DB_PASSWORD: ${LEGALCONSENTHUB_POSTGRES_PASSWORD} SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI: ${KEYCLOAK_ISSUER_URL}/realms/${KEYCLOAK_REALM} SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_JWK_SET_URI: ${KEYCLOAK_ISSUER_URL}/realms/${KEYCLOAK_REALM}/protocol/openid-connect/certs SERVER_PORT: 8080 LEGALCONSENTHUB_PDF_STORAGE_FILESYSTEM_BASE_DIR: /var/lib/legalconsenthub/pdfs ports: - "8080:8080" volumes: - legalconsenthub_pdf_cache:/var/lib/legalconsenthub/pdfs - ./keycloak-theme:/opt/keycloak/themes depends_on: legalconsenthub-db: condition: service_started keycloak: condition: service_started networks: - legalconsenthub-net env_file: - .env.prod frontend: image: gitea.lugnas.de/denis/legalconsenthub:latest container_name: legalconsenthub-frontend ports: - "3210:3000" depends_on: keycloak: condition: service_started networks: - legalconsenthub-net env_file: - .env.prod landing: image: gitea.lugnas.de/denis/legalconsenthub-landing:latest container_name: legalconsenthub-landing ports: - "3211:3000" networks: - legalconsenthub-net keycloak: image: quay.io/keycloak/keycloak:26.4.0 container_name: legalconsenthub-keycloak command: start-dev environment: KC_DB: postgres KC_DB_URL_HOST: keycloak-db KC_DB_URL_PORT: 5432 KC_DB_USERNAME: ${KEYCLOAK_POSTGRES_USER} KC_DB_PASSWORD: ${KEYCLOAK_POSTGRES_PASSWORD} KC_DB_DATABASE: ${KEYCLOAK_POSTGRES_DB} KC_DB_SCHEMA: public KC_BOOTSTRAP_ADMIN_USERNAME: ${KEYCLOAK_ADMIN} KC_BOOTSTRAP_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD} KC_HOSTNAME: ${KEYCLOAK_HOSTNAME} KC_HOSTNAME_STRICT: false KC_HTTP_ENABLED: true KC_HEALTH_ENABLED: true ports: - "7080:8080" depends_on: keycloak-db: condition: service_started networks: - legalconsenthub-net env_file: - .env.prod keycloak-db: image: postgres:latest container_name: legalconsenthub-keycloak-postgres environment: POSTGRES_USER: ${KEYCLOAK_POSTGRES_USER} POSTGRES_PASSWORD: ${KEYCLOAK_POSTGRES_PASSWORD} POSTGRES_DB: ${KEYCLOAK_POSTGRES_DB} ports: - "5445:5432" networks: - legalconsenthub-net volumes: - keycloak_postgres_data:/var/lib/postgresql env_file: - .env.prod legalconsenthub-db: image: postgres:latest container_name: legalconsenthub-postgres environment: POSTGRES_USER: ${LEGALCONSENTHUB_POSTGRES_USER} POSTGRES_PASSWORD: ${LEGALCONSENTHUB_POSTGRES_PASSWORD} POSTGRES_DB: ${LEGALCONSENTHUB_POSTGRES_DB} ports: - "5444:5432" networks: - legalconsenthub-net volumes: - legalconsenthub_postgres_data:/var/lib/postgresql env_file: - .env.prod maildev: image: maildev/maildev:2.2.1 container_name: legalconsenthub-maildev ports: - "1080:1080" - "1026:1025" networks: - legalconsenthub-net