######################################## ############## GENERAL ################# ######################################## name: onecx-local-env volumes: traefik: name: onecx-local-env_traefik labels: - "onecx-local-env.volume=traefik" postgres: name: onecx-local-env_postgres labels: - "onecx-local-env.volume=postgres" pgadmin: name: onecx-local-env_pgadmin labels: - "onecx-local-env.volume=pgadmin" - "com.docker.compose.project=onecx-local-env" - "com.docker.compose.description=Postgres database administration" - "com.docker.compose.volume=pgAdmin" networks: onecx: name: onecx-local-env_onecx ######################################## ####### ENVIRONMENT PRESETS ############ ######################################## # Define common environment variable sets for services # Requires corresponding variables to be defined in .env file # x-bff-variables: &bff_environment ONECX_PERMISSIONS_ENABLED: ${ONECX_PERMISSIONS_ENABLED} ONECX_PERMISSIONS_CACHE_ENABLED: ${ONECX_PERMISSIONS_CACHE_ENABLED} QUARKUS_OIDC_CLIENT_CLIENT_ID: ${ONECX_OIDC_CLIENT_CLIENT_ID} QUARKUS_OIDC_CLIENT_CREDENTIALS_SECRET: ${ONECX_OIDC_CLIENT_S_E_C_R_E_T} QUARKUS_OIDC_CLIENT_AUTH_SERVER_URL: ${ONECX_AUTH_SERVER_URL} QUARKUS_OIDC_AUTH_SERVER_URL: ${ONECX_AUTH_SERVER_URL} TKIT_LOG_JSON_ENABLED: ${JSON_LOGGER_ENABLED} TKIT_SECURITY_AUTH_ENABLED: ${ONECX_SECURITY_AUTH_ENABLED} x-svc-variables: &svc_single_tenancy QUARKUS_LOG_LEVEL: ${ONECX_LOG_LEVEL} QUARKUS_OIDC_AUTH_SERVER_URL: ${ONECX_AUTH_SERVER_URL} QUARKUS_OIDC_CLIENT_CLIENT_ID: ${ONECX_OIDC_CLIENT_CLIENT_ID} QUARKUS_OIDC_CLIENT_CREDENTIALS_SECRET: ${ONECX_OIDC_CLIENT_S_E_C_R_E_T} QUARKUS_OIDC_CLIENT_AUTH_SERVER_URL: ${ONECX_AUTH_SERVER_URL} QUARKUS_DATASOURCE_JDBC_MIN_SIZE: ${ONECX_DATASOURCE_JDBC_MIN_SIZE} QUARKUS_DATASOURCE_JDBC_MAX_SIZE: ${ONECX_DATASOURCE_JDBC_MAX_SIZE} QUARKUS_DATASOURCE_JDBC_IDLE_REMOVAL_INTERVAL: ${ONECX_DATASOURCE_JDBC_IDLE_REMOVAL_INTERVAL} TKIT_LOG_JSON_ENABLED: ${JSON_LOGGER_ENABLED} TKIT_SECURITY_AUTH_ENABLED: ${ONECX_SECURITY_AUTH_ENABLED} x-svc-multi_tenancy: &svc_multi_tenancy <<: *svc_single_tenancy QUARKUS_REST_CLIENT_ONECX_TENANT_URL: ${ONECX_REST_CLIENT_ONECX_TENANT_URL} ONECX_TENANT_CACHE_ENABLED: ${ONECX_TENANT_CACHE_ENABLED} TKIT_RS_CONTEXT_TENANT_ID_ENABLED: ${ONECX_RS_CONTEXT_TENANT_ID_ENABLED} TKIT_RS_CONTEXT_TENANT_ID_MOCK_ENABLED: ${ONECX_RS_CONTEXT_TENANT_ID_MOCK_ENABLED} services: ######################################## ############# BASE Services ############ ######################################## traefik: image: ${TRAEFIK} container_name: traefik command: --api.insecure=true --providers.docker=true #Enables the web UI and tells Træfik to listen to docker ports: - "80:80" # The HTTP port - "8082:8080" # The Web UI (enabled by --api) volumes: - traefik:/etc/traefik/data - /var/run/docker.sock:/var/run/docker.sock # Traefik can listen to the Docker events - ../../init-data/traefik/base/traefik-conf.yml:/etc/traefik/traefik.yml - ../../init-data/traefik/active:/etc/traefik/active # location of activated local Microfrontends - ./logs:/var/log/traefik extra_hosts: - "host.docker.internal:host-gateway" networks: - onecx profiles: - all - base - data-import postgresdb: image: ${POSTGRES} container_name: postgresdb command: [-cmax_prepared_transactions=100] ports: - "5432:5432" environment: POSTGRES_PASSWORD: admin volumes: - postgres:/var/lib/postgresql/data - ../../init-data/postgres:/docker-entrypoint-initdb.d/ healthcheck: test: ["CMD", "pg_isready", "-U", "postgres"] interval: 10s timeout: 5s retries: 3 depends_on: traefik: condition: service_started labels: - "traefik.http.services.postgresdb.loadbalancer.server.port=5432" - "traefik.http.routers.postgresdb.rule=Host(`postgresdb`)" networks: - onecx profiles: - all - base - data-import keycloak-app: image: ${KEYCLOAK} container_name: ${KC_APP_NAME} command: "start-dev --import-realm" ports: - "8080:8080" environment: KC_BOOTSTRAP_ADMIN_USERNAME: ${KC_ADMIN_USERNAME} KC_BOOTSTRAP_ADMIN_PASSWORD: ${KC_ADMIN_PASSWORD} KC_DB: postgres KC_DB_POOL_INITIAL_SIZE: 1 KC_DB_POOL_MAX_SIZE: 5 KC_DB_POOL_MIN_SIZE: 2 KC_DB_URL_DATABASE: keycloak KC_DB_URL_HOST: postgresdb KC_DB_USERNAME: ${KC_DB_USERNAME} KC_DB_PASSWORD: ${KC_DB_PASSWORD} KC_HOSTNAME: ${KC_APP_NAME} KC_HOSTNAME_STRICT: false KC_HTTP_ENABLED: true KC_HTTP_PORT: 8080 KC_HEALTH_ENABLED: true volumes: - ../../init-data/keycloak:/opt/keycloak/data/import healthcheck: test: "{ printf >&3 'GET /realms/onecx/.well-known/openid-configuration HTTP/1.0\r\nHost: localhost\r\n\r\n'; cat <&3; } 3<>/dev/tcp/localhost/8080 | head -1 | grep 200" interval: 10s timeout: 5s retries: 10 depends_on: postgresdb: condition: service_healthy labels: - "traefik.http.services.keycloak-intranet.loadbalancer.server.port=8080" - "traefik.http.routers.keycloak-intranet.rule=Host(`${KC_APP_NAME}`)" networks: - onecx profiles: - all - base - data-import pgadmin: image: ${PGADMIN} container_name: pgadmin environment: PGADMIN_DEFAULT_EMAIL: ${PGADMIN_USER} PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_PWD} volumes: - pgadmin:/var/lib/pgadmin - ../../init-data/pgadmin/servers.json:/pgadmin4/servers.json healthcheck: test: ["CMD", "wget", "-O", "-", "http://localhost:80/misc/ping"] interval: 10s timeout: 5s retries: 10 depends_on: postgresdb: condition: service_healthy labels: - "traefik.http.services.pgadmin.loadbalancer.server.port=80" - "traefik.http.routers.pgadmin.rule=Host(`pgadmin`)" networks: - onecx profiles: - all - base ######################################## ########### OneCX Products ############# ######################################## ########## ONECX AI Provider onecx-ai-provider-svc: image: ${ONECX_AI_PROVIDER_SVC} container_name: onecx-ai-provider-svc environment: <<: *svc_multi_tenancy QUARKUS_DATASOURCE_USERNAME: onecx_ai_provider QUARKUS_DATASOURCE_PASSWORD: onecx_ai_provider QUARKUS_DATASOURCE_JDBC_URL: jdbc:postgresql://postgresdb:5432/onecx_ai_provider?sslmode=disable entrypoint: ["/work/application"] command: - "-Djavax.net.ssl.trustStore=/opt/certs/truststore.jks" - "-Djavax.net.ssl.trustStorePassword=trustjava" - "-Djavax.net.ssl.trustStoreType=JKS" volumes: - ../../certs/truststore.jks:/opt/certs/truststore.jks:ro healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: keycloak-app: condition: service_healthy labels: - "traefik.http.services.onecx-ai-provider-svc.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-ai-provider-svc.rule=Host(`onecx-ai-provider-svc`)" networks: - onecx profiles: - all onecx-ai-provider-bff: image: ${ONECX_AI_PROVIDER_BFF} container_name: onecx-ai-provider-bff environment: <<: *bff_environment ONECX_PERMISSIONS_PRODUCT_NAME: "onecx-ai-provider" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: onecx-ai-provider-svc: condition: service_healthy labels: - "traefik.http.services.onecx-ai-provider-bff.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-ai-provider-bff.rule=Host(`onecx-ai-provider-bff`)" networks: - onecx profiles: - all onecx-ai-provider-ui: image: ${ONECX_AI_PROVIDER_UI} container_name: onecx-ai-provider-ui environment: APP_BASE_HREF: /mfe/ai-provider/ APP_ID: onecx-ai-provider-ui PRODUCT_NAME: "onecx-ai-provider" healthcheck: test: ["CMD", "curl", "--fail", "-G", "http://localhost:8080"] interval: 10s timeout: 5s retries: 3 depends_on: onecx-ai-provider-bff: condition: service_healthy labels: - "traefik.http.services.onecx-ai-provider-ui.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-ai-provider-ui.rule=Host(`onecx.localhost`) && PathPrefix(`/mfe/ai-provider/`)" networks: - onecx profiles: - all ########## ONECX ANNOUNCEMENT onecx-announcement-svc: image: ${ONECX_ANNOUNCEMENT_SVC} container_name: onecx-announcement-svc environment: <<: *svc_multi_tenancy QUARKUS_DATASOURCE_USERNAME: onecx_announcement QUARKUS_DATASOURCE_PASSWORD: onecx_announcement QUARKUS_DATASOURCE_JDBC_URL: jdbc:postgresql://postgresdb:5432/onecx_announcement?sslmode=disable healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: keycloak-app: condition: service_healthy labels: - "traefik.http.services.onecx-announcement-svc.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-announcement-svc.rule=Host(`onecx-announcement-svc`)" networks: - onecx profiles: - all onecx-announcement-bff: image: ${ONECX_ANNOUNCEMENT_BFF} container_name: onecx-announcement-bff environment: <<: *bff_environment ONECX_PERMISSIONS_PRODUCT_NAME: "onecx-announcement" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: onecx-announcement-svc: condition: service_healthy labels: - "traefik.http.services.onecx-announcement-bff.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-announcement-bff.rule=Host(`onecx-announcement-bff`)" networks: - onecx profiles: - all onecx-announcement-ui: image: ${ONECX_ANNOUNCEMENT_UI} container_name: onecx-announcement-ui environment: APP_BASE_HREF: /mfe/announcement/ APP_ID: onecx-announcement-ui PRODUCT_NAME: "onecx-announcement" depends_on: onecx-announcement-bff: condition: service_healthy labels: - "traefik.http.services.onecx-announcement-ui.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-announcement-ui.rule=Host(`onecx.localhost`) && PathPrefix(`/mfe/announcement/`)" networks: - onecx profiles: - all ########## ONECX BOOKMARK onecx-bookmark-svc: image: ${ONECX_BOOKMARK_SVC} container_name: onecx-bookmark-svc environment: <<: *svc_multi_tenancy QUARKUS_DATASOURCE_USERNAME: onecx_bookmark QUARKUS_DATASOURCE_PASSWORD: onecx_bookmark QUARKUS_DATASOURCE_JDBC_URL: jdbc:postgresql://postgresdb:5432/onecx_bookmark?sslmode=disable healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: keycloak-app: condition: service_healthy labels: - "traefik.http.services.onecx-bookmark-svc.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-bookmark-svc.rule=Host(`onecx-bookmark-svc`)" networks: - onecx profiles: - all - data-import onecx-bookmark-bff: image: ${ONECX_BOOKMARK_BFF} container_name: onecx-bookmark-bff environment: <<: *bff_environment ONECX_PERMISSIONS_PRODUCT_NAME: "onecx-bookmark" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: onecx-bookmark-svc: condition: service_healthy labels: - "traefik.http.services.onecx-bookmark-bff.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-bookmark-bff.rule=Host(`onecx-bookmark-bff`)" networks: - onecx profiles: - all onecx-bookmark-ui: image: ${ONECX_BOOKMARK_UI} container_name: onecx-bookmark-ui environment: APP_BASE_HREF: /mfe/bookmark/ APP_ID: onecx-bookmark-ui PRODUCT_NAME: "onecx-bookmark" depends_on: onecx-bookmark-bff: condition: service_healthy labels: - "traefik.http.services.onecx-bookmark-ui.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-bookmark-ui.rule=Host(`onecx.localhost`) && PathPrefix(`/mfe/bookmark/`)" networks: - onecx profiles: - all ########## ONECX CHAT onecx-chat-svc: image: ${ONECX_CHAT_SVC} container_name: onecx-chat-svc environment: <<: *svc_multi_tenancy QUARKUS_DATASOURCE_USERNAME: onecx_chat QUARKUS_DATASOURCE_PASSWORD: onecx_chat QUARKUS_DATASOURCE_JDBC_URL: jdbc:postgresql://postgresdb:5432/onecx_chat?sslmode=disable healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: keycloak-app: condition: service_healthy labels: - "traefik.http.services.onecx-chat-svc.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-chat-svc.rule=Host(`onecx-chat-svc`)" networks: - onecx profiles: - all onecx-chat-bff: image: ${ONECX_CHAT_BFF} container_name: onecx-chat-bff environment: <<: *bff_environment ONECX_PERMISSIONS_PRODUCT_NAME: "onecx-chat" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: onecx-chat-svc: condition: service_healthy labels: - "traefik.http.services.onecx-chat-bff.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-chat-bff.rule=Host(`onecx-chat-bff`)" networks: - onecx profiles: - all onecx-chat-ui: image: ${ONECX_CHAT_UI} container_name: onecx-chat-ui environment: APP_BASE_HREF: /mfe/chat/ APP_ID: onecx-chat-ui PRODUCT_NAME: "onecx-chat" depends_on: onecx-chat-bff: condition: service_healthy labels: - "traefik.http.services.onecx-chat-ui.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-chat-ui.rule=Host(`onecx.localhost`) && PathPrefix(`/mfe/chat/`)" networks: - onecx profiles: - all ########## ONECX HELP onecx-help-svc: image: ${ONECX_HELP_SVC} container_name: onecx-help-svc environment: <<: *svc_multi_tenancy QUARKUS_DATASOURCE_USERNAME: onecx_help QUARKUS_DATASOURCE_PASSWORD: onecx_help QUARKUS_DATASOURCE_JDBC_URL: jdbc:postgresql://postgresdb:5432/onecx_help?sslmode=disable healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: postgresdb: condition: service_healthy keycloak-app: condition: service_healthy labels: - "traefik.http.services.onecx-help-svc.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-help-svc.rule=Host(`onecx-help-svc`)" networks: - onecx profiles: - all onecx-help-bff: image: ${ONECX_HELP_BFF} container_name: onecx-help-bff environment: <<: *bff_environment ONECX_PERMISSIONS_PRODUCT_NAME: "onecx-help" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: onecx-help-svc: condition: service_healthy labels: - "traefik.http.services.onecx-help-bff.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-help-bff.rule=Host(`onecx-help-bff`)" networks: - onecx profiles: - all onecx-help-ui: image: ${ONECX_HELP_UI} container_name: onecx-help-ui environment: APP_BASE_HREF: /mfe/help/ APP_ID: onecx-help-ui PRODUCT_NAME: "onecx-help" depends_on: onecx-help-bff: condition: service_healthy labels: - "traefik.http.services.onecx-help-ui.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-help-ui.rule=Host(`onecx.localhost`) && PathPrefix(`/mfe/help/`)" networks: - onecx profiles: - all ########## ONECX IAM onecx-iam-svc: image: ${ONECX_IAM_SVC} container_name: onecx-iam-svc environment: <<: *svc_single_tenancy QUARKUS_KEYCLOAK_ADMIN_CLIENT_SERVER_URL: http://keycloak-app:8080 QUARKUS_KEYCLOAK_ADMIN_CLIENT_REALM: master QUARKUS_KEYCLOAK_ADMIN_CLIENT_USERNAME: admin QUARKUS_KEYCLOAK_ADMIN_CLIENT_PASSWORD: admin healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: postgresdb: condition: service_healthy keycloak-app: condition: service_healthy labels: - "traefik.http.services.onecx-iam-svc.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-iam-svc.rule=Host(`onecx-iam-svc`)" networks: - onecx profiles: - all onecx-iam-bff: image: ${ONECX_IAM_BFF} container_name: onecx-iam-bff environment: <<: *bff_environment ONECX_PERMISSIONS_PRODUCT_NAME: "onecx-iam" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: onecx-iam-svc: condition: service_healthy labels: - "traefik.http.services.onecx-iam-bff.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-iam-bff.rule=Host(`onecx-iam-bff`)" networks: - onecx profiles: - all onecx-iam-ui: image: ${ONECX_IAM_UI} container_name: onecx-iam-ui environment: APP_BASE_HREF: "/mfe/iam/" APP_ID: "onecx-iam-ui" PRODUCT_NAME: "onecx-iam" depends_on: onecx-iam-bff: condition: service_healthy labels: - "traefik.http.services.onecx-iam-ui.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-iam-ui.rule=Host(`onecx.localhost`) && PathPrefix(`/mfe/iam/`)" networks: - onecx profiles: - all ########## ONECX PARAMETER onecx-parameter-svc: image: ${ONECX_PARAMETER_SVC} container_name: onecx-parameter-svc environment: <<: *svc_multi_tenancy QUARKUS_DATASOURCE_USERNAME: onecx_parameter QUARKUS_DATASOURCE_PASSWORD: onecx_parameter QUARKUS_DATASOURCE_JDBC_URL: "jdbc:postgresql://postgresdb:5432/onecx_parameter?sslmode=disable" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: keycloak-app: condition: service_healthy labels: - "traefik.http.services.onecx-parameter-svc.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-parameter-svc.rule=Host(`onecx-parameter-svc`)" networks: - onecx profiles: - all - base - data-import onecx-parameter-bff: image: ${ONECX_PARAMETER_BFF} container_name: onecx-parameter-bff environment: <<: *bff_environment ONECX_PERMISSIONS_PRODUCT_NAME: "onecx-parameter" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: onecx-parameter-svc: condition: service_healthy labels: - "traefik.http.services.onecx-parameter-bff.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-parameter-bff.rule=Host(`onecx-parameter-bff`)" networks: - onecx profiles: - all onecx-parameter-ui: image: ${ONECX_PARAMETER_UI} container_name: onecx-parameter-ui environment: APP_BASE_HREF: "/mfe/parameter/" APP_ID: "onecx-parameter-ui" PRODUCT_NAME: "onecx-parameter" depends_on: onecx-parameter-bff: condition: service_healthy labels: - "traefik.http.services.onecx-parameter-ui.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-parameter-ui.rule=Host(`onecx.localhost`) && PathPrefix(`/mfe/parameter/`)" networks: - onecx profiles: - all ########## ONECX PERMISSION onecx-permission-svc: image: ${ONECX_PERMISSION_SVC} container_name: onecx-permission-svc environment: <<: *svc_multi_tenancy QUARKUS_DATASOURCE_USERNAME: onecx_permission QUARKUS_DATASOURCE_PASSWORD: onecx_permission QUARKUS_DATASOURCE_JDBC_URL: "jdbc:postgresql://postgresdb:5432/onecx_permission?sslmode=disable" ONECX_PERMISSION_TOKEN_VERIFIED: false healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: keycloak-app: condition: service_healthy labels: - "traefik.http.services.onecx-permission-svc.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-permission-svc.rule=Host(`onecx-permission-svc`)" networks: - onecx profiles: - all - base - data-import onecx-permission-bff: image: ${ONECX_PERMISSION_BFF} container_name: onecx-permission-bff environment: <<: *bff_environment ONECX_PERMISSIONS_PRODUCT_NAME: "onecx-permission" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: onecx-permission-svc: condition: service_healthy labels: - "traefik.http.services.onecx-permission-bff.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-permission-bff.rule=Host(`onecx-permission-bff`)" networks: - onecx profiles: - all onecx-permission-ui: image: ${ONECX_PERMISSION_UI} container_name: onecx-permission-ui environment: APP_BASE_HREF: "/mfe/permission/" APP_ID: "onecx-permission-ui" PRODUCT_NAME: "onecx-permission" depends_on: onecx-permission-bff: condition: service_healthy labels: - "traefik.http.services.onecx-permission-ui.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-permission-ui.rule=Host(`onecx.localhost`) && PathPrefix(`/mfe/permission/`)" networks: - onecx profiles: - all ########## ONECX PRODUCT-STORE onecx-product-store-svc: image: ${ONECX_PRODUCT_STORE_SVC} container_name: onecx-product-store-svc environment: <<: *svc_single_tenancy QUARKUS_DATASOURCE_USERNAME: onecx_product_store QUARKUS_DATASOURCE_PASSWORD: onecx_product_store QUARKUS_DATASOURCE_JDBC_URL: "jdbc:postgresql://postgresdb:5432/onecx_product_store?sslmode=disable" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: keycloak-app: condition: service_healthy labels: - "traefik.http.services.onecx-product-store-svc.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-product-store-svc.rule=Host(`onecx-product-store-svc`)" networks: - onecx profiles: - all - base - data-import onecx-product-store-bff: image: ${ONECX_PRODUCT_STORE_BFF} container_name: onecx-product-store-bff environment: <<: *bff_environment ONECX_PERMISSIONS_PRODUCT_NAME: "onecx-product-store" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: onecx-product-store-svc: condition: service_healthy labels: - "traefik.http.services.onecx-product-store-bff.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-product-store-bff.rule=Host(`onecx-product-store-bff`)" networks: - onecx profiles: - all onecx-product-store-ui: image: ${ONECX_PRODUCT_STORE_UI} container_name: onecx-product-store-ui environment: APP_BASE_HREF: "/mfe/product-store/" APP_ID: "onecx-product-store-ui" PRODUCT_NAME: "onecx-product-store" depends_on: onecx-product-store-bff: condition: service_healthy labels: - "traefik.http.services.onecx-product-store-ui.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-product-store-ui.rule=Host(`onecx.localhost`) && PathPrefix(`/mfe/product-store/`)" networks: - onecx profiles: - all ########## ONECX SHELL onecx-shell-bff: image: ${ONECX_SHELL_BFF} container_name: onecx-shell-bff environment: <<: *bff_environment ONECX_PERMISSIONS_PRODUCT_NAME: "onecx-shell" QUARKUS_LOG_LEVEL: DEBUG healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 start_period: 10s depends_on: keycloak-app: condition: service_healthy onecx-permission-svc: condition: service_healthy onecx-product-store-svc: condition: service_healthy onecx-tenant-svc: condition: service_healthy onecx-theme-svc: condition: service_healthy onecx-user-profile-svc: condition: service_healthy onecx-workspace-svc: condition: service_healthy labels: - "traefik.http.services.onecx-shell-bff.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-shell-bff.rule=Host(`onecx-shell-bff`)" networks: - onecx profiles: - all - base onecx-shell-ui: image: ${ONECX_SHELL_UI} container_name: onecx-shell-ui environment: ONECX_PERMISSIONS_ENABLED: true ONECX_PERMISSIONS_CACHE_ENABLED: false ONECX_PERMISSIONS_PRODUCT_NAME: "onecx-shell" APP_BASE_HREF: "/onecx-shell/" KEYCLOAK_URL: ${KC_URL} KEYCLOAK_REALM: ${KC_REALM} KEYCLOAK_CLIENT_ID: ${KC_CLIENT_ID} healthcheck: test: ["CMD", "curl", "--fail", "-G", "http://localhost:8080"] interval: 10s timeout: 5s retries: 3 depends_on: onecx-shell-bff: condition: service_healthy labels: - "traefik.http.services.onecx-shell-ui.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-shell-ui.rule=Host(`onecx.localhost`) && PathPrefix(`/onecx-shell/`)" networks: - onecx profiles: - all - base ########## ONECX TENANT onecx-tenant-svc: image: ${ONECX_TENANT_SVC} container_name: onecx-tenant-svc environment: <<: *svc_single_tenancy QUARKUS_DATASOURCE_USERNAME: onecx_tenant QUARKUS_DATASOURCE_PASSWORD: onecx_tenant QUARKUS_DATASOURCE_JDBC_URL: "jdbc:postgresql://postgresdb:5432/onecx_tenant?sslmode=disable" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: keycloak-app: condition: service_healthy labels: - "traefik.http.services.onecx-tenant-svc.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-tenant-svc.rule=Host(`onecx-tenant-svc`)" networks: - onecx profiles: - all - base - data-import onecx-tenant-bff: image: ${ONECX_TENANT_BFF} container_name: onecx-tenant-bff environment: <<: *bff_environment ONECX_PERMISSIONS_PRODUCT_NAME: "onecx-tenant" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: onecx-tenant-svc: condition: service_healthy labels: - "traefik.http.services.onecx-tenant-bff.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-tenant-bff.rule=Host(`onecx-tenant-bff`)" networks: - onecx profiles: - all onecx-tenant-ui: image: ${ONECX_TENANT_UI} container_name: onecx-tenant-ui environment: APP_BASE_HREF: "/mfe/tenant/" APP_ID: "onecx-tenant-ui" PRODUCT_NAME: "onecx-tenant" depends_on: onecx-tenant-bff: condition: service_healthy labels: - "traefik.http.services.onecx-tenant-ui.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-tenant-ui.rule=Host(`onecx.localhost`) && PathPrefix(`/mfe/tenant/`)" networks: - onecx profiles: - all ########## ONECX THEME onecx-theme-svc: image: ${ONECX_THEME_SVC} container_name: onecx-theme-svc environment: <<: *svc_multi_tenancy QUARKUS_DATASOURCE_USERNAME: onecx_theme QUARKUS_DATASOURCE_PASSWORD: onecx_theme QUARKUS_DATASOURCE_JDBC_URL: "jdbc:postgresql://postgresdb:5432/onecx_theme?sslmode=disable" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: keycloak-app: condition: service_healthy labels: - "traefik.http.services.onecx-theme-svc.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-theme-svc.rule=Host(`onecx-theme-svc`)" networks: - onecx profiles: - all - base - data-import onecx-theme-bff: image: ${ONECX_THEME_BFF} container_name: onecx-theme-bff environment: <<: *bff_environment ONECX_PERMISSIONS_PRODUCT_NAME: "onecx-theme" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: onecx-theme-svc: condition: service_healthy labels: - "traefik.http.services.onecx-theme-bff.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-theme-bff.rule=Host(`onecx-theme-bff`)" networks: - onecx profiles: - all onecx-theme-ui: image: ${ONECX_THEME_UI} container_name: onecx-theme-ui environment: APP_BASE_HREF: "/mfe/theme/" APP_ID: "onecx-theme-ui" PRODUCT_NAME: "onecx-theme" depends_on: onecx-theme-bff: condition: service_healthy labels: - "traefik.http.services.onecx-theme-ui.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-theme-ui.rule=Host(`onecx.localhost`) && PathPrefix(`/mfe/theme/`)" networks: - onecx profiles: - all ########## ONECX USER-PROFILE onecx-user-profile-avatar-svc: image: ${ONECX_USER_PROFILE_AVATAR_SVC} container_name: onecx-user-profile-avatar-svc environment: <<: *svc_multi_tenancy QUARKUS_DATASOURCE_USERNAME: onecx_user_profile_avatar QUARKUS_DATASOURCE_PASSWORD: onecx_user_profile_avatar QUARKUS_DATASOURCE_JDBC_URL: "jdbc:postgresql://postgresdb:5432/onecx_user_profile_avatar?sslmode=disable" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: keycloak-app: condition: service_healthy labels: - "traefik.http.services.onecx-user-profile-avatar-svc.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-user-profile-avatar-svc.rule=Host(`onecx-user-profile-avatar-svc`)" networks: - onecx profiles: - all - base onecx-user-profile-svc: image: ${ONECX_USER_PROFILE_SVC} container_name: onecx-user-profile-svc environment: <<: *svc_multi_tenancy QUARKUS_DATASOURCE_USERNAME: onecx_user_profile QUARKUS_DATASOURCE_PASSWORD: onecx_user_profile QUARKUS_DATASOURCE_JDBC_URL: "jdbc:postgresql://postgresdb:5432/onecx_user_profile?sslmode=disable" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: keycloak-app: condition: service_healthy labels: - "traefik.http.services.onecx-user-profile-svc.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-user-profile-svc.rule=Host(`onecx-user-profile-svc`)" networks: - onecx profiles: - all - base onecx-user-profile-bff: image: ${ONECX_USER_PROFILE_BFF} container_name: onecx-user-profile-bff environment: <<: *bff_environment ONECX_PERMISSIONS_PRODUCT_NAME: "onecx-user-profile" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: onecx-user-profile-avatar-svc: condition: service_healthy onecx-user-profile-svc: condition: service_healthy labels: - "traefik.http.services.onecx-user-profile-bff.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-user-profile-bff.rule=Host(`onecx-user-profile-bff`)" networks: - onecx profiles: - all - base onecx-user-profile-ui: image: ${ONECX_USER_PROFILE_UI} container_name: onecx-user-profile-ui environment: APP_BASE_HREF: "/mfe/user-profile/" APP_ID: "onecx-user-profile-ui" PRODUCT_NAME: "onecx-user-profile" healthcheck: test: ["CMD", "curl", "--fail", "-G", "http://localhost:8080"] interval: 10s timeout: 5s retries: 3 depends_on: onecx-user-profile-bff: condition: service_healthy labels: - "traefik.http.services.onecx-user-profile-ui.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-user-profile-ui.rule=Host(`onecx.localhost`) && PathPrefix(`/mfe/user-profile/`)" networks: - onecx profiles: - all - base ########## ONECX WELCOME onecx-welcome-svc: image: ${ONECX_WELCOME_SVC} container_name: onecx-welcome-svc environment: <<: *svc_multi_tenancy QUARKUS_DATASOURCE_USERNAME: onecx_welcome QUARKUS_DATASOURCE_PASSWORD: onecx_welcome QUARKUS_DATASOURCE_JDBC_URL: "jdbc:postgresql://postgresdb:5432/onecx_welcome?sslmode=disable" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 start_period: 10s depends_on: keycloak-app: condition: service_healthy labels: - "traefik.http.services.onecx-welcome-svc.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-welcome-svc.rule=Host(`onecx-welcome-svc`)" networks: - onecx profiles: - all - data-import onecx-welcome-bff: image: ${ONECX_WELCOME_BFF} container_name: onecx-welcome-bff environment: <<: *bff_environment ONECX_PERMISSIONS_PRODUCT_NAME: "onecx-welcome" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: onecx-welcome-svc: condition: service_healthy labels: - "traefik.http.services.onecx-welcome-bff.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-welcome-bff.rule=Host(`onecx-welcome-bff`)" networks: - onecx profiles: - all onecx-welcome-ui: image: ${ONECX_WELCOME_UI} container_name: onecx-welcome-ui environment: APP_BASE_HREF: "/mfe/welcome/" APP_ID: "onecx-welcome-ui" PRODUCT_NAME: "onecx-welcome" depends_on: onecx-welcome-bff: condition: service_healthy labels: - "traefik.http.services.onecx-welcome-ui.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-welcome-ui.rule=Host(`onecx.localhost`) && PathPrefix(`/mfe/welcome/`)" networks: - onecx profiles: - all ########## ONECX WORKSPACE onecx-workspace-svc: image: ${ONECX_WORKSPACE_SVC} container_name: onecx-workspace-svc user: root environment: <<: *svc_multi_tenancy QUARKUS_DATASOURCE_USERNAME: onecx_workspace QUARKUS_DATASOURCE_PASSWORD: onecx_workspace QUARKUS_DATASOURCE_JDBC_URL: "jdbc:postgresql://postgresdb:5432/onecx_workspace?sslmode=disable" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: keycloak-app: condition: service_healthy labels: - "traefik.http.services.onecx-workspace-svc.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-workspace-svc.rule=Host(`onecx-workspace-svc`)" networks: - onecx profiles: - all - base - data-import onecx-workspace-bff: image: ${ONECX_WORKSPACE_BFF} container_name: onecx-workspace-bff environment: <<: *bff_environment ONECX_PERMISSIONS_PRODUCT_NAME: "onecx-workspace" healthcheck: test: curl --head -fsS http://localhost:8080/q/health interval: 10s timeout: 5s retries: 3 depends_on: onecx-workspace-svc: condition: service_healthy labels: - "traefik.http.services.onecx-workspace-bff.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-workspace-bff.rule=Host(`onecx-workspace-bff`)" networks: - onecx profiles: - all - base onecx-workspace-ui: image: ${ONECX_WORKSPACE_UI} container_name: onecx-workspace-ui environment: APP_BASE_HREF: "/mfe/workspace/" APP_ID: "onecx-workspace-ui" PRODUCT_NAME: "onecx-workspace" healthcheck: test: ["CMD", "curl", "--fail", "-G", "http://localhost:8080"] interval: 10s timeout: 5s retries: 3 depends_on: onecx-workspace-bff: condition: service_healthy labels: - "traefik.http.services.onecx-workspace-ui.loadbalancer.server.port=8080" - "traefik.http.routers.onecx-workspace-ui.rule=Host(`onecx.localhost`) && PathPrefix(`/mfe/workspace/`)" networks: - onecx profiles: - all - base ######################################## ######### DUMMY service ############ ######################################## # Ensure all depended services are running # Used to ensure that the essential services are running waiting-on-profile-base: image: alpine:3 container_name: waiting-on-profile-base depends_on: pgadmin: condition: service_healthy onecx-parameter-svc: condition: service_healthy onecx-shell-ui: condition: service_healthy onecx-user-profile-ui: condition: service_healthy onecx-workspace-ui: condition: service_healthy networks: - onecx profiles: - base # Internal used to ensure that all services used by imports are running waiting-on-profile-data-import: image: alpine:3 container_name: waiting-on-profile-data-import depends_on: onecx-bookmark-svc: condition: service_healthy onecx-parameter-svc: condition: service_healthy onecx-permission-svc: condition: service_healthy onecx-product-store-svc: condition: service_healthy onecx-tenant-svc: condition: service_healthy onecx-theme-svc: condition: service_healthy onecx-welcome-svc: condition: service_healthy onecx-workspace-svc: condition: service_healthy networks: - onecx profiles: - data-import # Used to ensure that all services are running waiting-on-profile-all: image: alpine:3 container_name: waiting-on-profile-all depends_on: pgadmin: condition: service_healthy onecx-parameter-svc: condition: service_healthy onecx-shell-ui: condition: service_healthy onecx-user-profile-ui: condition: service_healthy onecx-workspace-ui: condition: service_healthy networks: - onecx profiles: - all