version: "3" services: # # dcbr-web # dcbr-web: image: dcbr-web environment: WEB_HOST_NAME: ${WEB_HOST_NAME} WEB_HOST_PORT: ${WEB_HOST_PORT} WEB_HOST_TLS: ${WEB_HOST_TLS} DCBR_API_HOST: ${DCBR_API_HOST} DCBR_API_PORT: ${DCBR_API_PORT} volumes: - ../dcbr-web/openshift/config/Caddyfile:/etc/Caddyfile networks: - dcbr ports: - "8081:8080" depends_on: - dcbr-api # # dcbr-web-dev # ------------------------------------------------- # Dockerized vue.js app with hot-reloading, # for development purposes. # dcbr-web-dev: build: context: .. dockerfile: docker/dcbr-web/Dockerfile-dev environment: CHOKIDAR_USEPOLLING: "true" volumes: - ../dcbr-web/src:/app/src networks: - dcbr ports: - "8081:8080" depends_on: - dcbr-api # # dcbr-api # ------------------------------------------------- # The API performs the migrations on the database, # Therefore it needs to come up after the database. # # # We are using a simple sleep command to do this # for the moment; refer to the `command` section # of the configuration for details. It would be # nice to implement a more deterministic solution. # dcbr-api: image: dcbr-api environment: APP_SCRIPT: ${APP_SCRIPT} STI_SCRIPTS_PATH: ${STI_SCRIPTS_PATH} DATABASE_SERVICE_HOST: ${DATABASE_SERVICE_HOST} DATABASE_SERVICE_PORT: ${DATABASE_SERVICE_PORT} DATABASE_NAME: ${DATABASE_NAME} DATABASE_USER: ${DATABASE_USER} DATABASE_PASSWORD: ${DATABASE_PASSWORD} DJANGO_DEBUG: ${DJANGO_DEBUG} DJANGO_ADMIN_USER: ${DJANGO_ADMIN_USER} DJANGO_ADMIN_PASSWORD: ${DJANGO_ADMIN_PASSWORD} DJANGO_ADMIN_EMAIL: ${DJANGO_ADMIN_EMAIL} EMAIL_HOST: ${EMAIL_HOST} EMAIL_PORT: ${EMAIL_PORT} EMAIL_BACKEND: ${EMAIL_BACKEND} EMAIL_USE_TLS: ${EMAIL_USE_TLS} AGRI_EMAIL: ${AGRI_EMAIL} REMINDER_EMAIL_NOTICE_MONTHS: ${REMINDER_EMAIL_NOTICE_MONTHS} WEASYPRINT_HOST: ${WEASYPRINT_HOST} WEASYPRINT_PORT: ${WEASYPRINT_PORT} OIDC_RP_SIGN_ALGO: ${OIDC_RP_SIGN_ALGO} OIDC_OP_JWKS_ENDPOINT: ${OIDC_OP_JWKS_ENDPOINT} OIDC_RP_CLIENT_ID: ${OIDC_RP_CLIENT_ID} OIDC_RP_CLIENT_SECRET: ${OIDC_RP_CLIENT_SECRET} OIDC_OP_AUTHORIZATION_ENDPOINT: ${OIDC_OP_AUTHORIZATION_ENDPOINT} OIDC_OP_TOKEN_ENDPOINT: ${OIDC_OP_TOKEN_ENDPOINT} OIDC_OP_USER_ENDPOINT: ${OIDC_OP_USER_ENDPOINT} OIDC_LOGOUT_REDIRECT_URL: ${OIDC_LOGOUT_REDIRECT_URL} DCBR_LOG_LEVEL: ${DCBR_LOG_LEVEL} volumes: - ../dcbr-api:/opt/app-root/src networks: - dcbr ports: - "8080:8080" depends_on: - dcbr-db command: > /bin/bash -c " echo waiting for dcbr-db ...; sleep 5; if [ $DEBUG ] && [ "$DEBUG" == "true" ]; then echo Running in debug mode; python manage.py migrate; python manage.py process_tasks & disown; python manage.py runserver 0.0.0.0:8080; else echo Running s2i container...; env; ${STI_SCRIPTS_PATH}/run; fi" # # schema-spy #------------------------------------------------- # Needs to wait for the schema to be created/migrated # by the API server; it's not enough to wait for the # database to be available. # # We are using a simple sleep command to do this # for the moment; refer to the `command` section # of the configuration for details. It would be # nice to implement a more deterministic solution. # schema-spy: image: schema-spy environment: - DATABASE_SERVICE_NAME=${DATABASE_SERVICE_NAME} - POSTGRESQL_DATABASE=${POSTGRESQL_DATABASE} - POSTGRESQL_USER=${POSTGRESQL_USER} - POSTGRESQL_PASSWORD=${POSTGRESQL_PASSWORD} networks: - dcbr ports: - 8082:8080 depends_on: - dcbr-db command: > /bin/sh -c " echo sleeping ...; sleep 20; ./start.sh;" # # dcbr-db # using the same postgresql image we will use on OpenShift # dcbr-db: image: registry.access.redhat.com/rhscl/postgresql-10-rhel7:latest environment: POSTGRESQL_USER: ${POSTGRESQL_USER} POSTGRESQL_PASSWORD: ${POSTGRESQL_PASSWORD} POSTGRESQL_DATABASE: ${POSTGRESQL_DATABASE} networks: - dcbr ports: - 5432:5432 volumes: - dcbr-data:/var/lib/pgsql/data # # keycloak service # keycloak: build: context: .. dockerfile: docker/keycloak/Dockerfile environment: DB_VENDOR: ${KEYCLOAK_DB_VENDOR} DB_ADDR: ${KEYCLOAK_DB_ADDR} DB_DATABASE: ${KEYCLOAK_DB_NAME} DB_USER: ${KEYCLOAK_DB_USER} DB_PASSWORD: ${KEYCLOAK_DB_PASSWORD} KEYCLOAK_USER: ${KEYCLOAK_USER} KEYCLOAK_PASSWORD: ${KEYCLOAK_PASSWORD} KEYCLOAK_LOGLEVEL: ${KEYCLOAK_LOGLEVEL} ROOT_LOGLEVEL: ${KEYCLOAK_ROOT_LOGLEVEL} networks: - dcbr ports: - 8888:8080 depends_on: - keycloak-db command: -Dkeycloak.migration.action=import -Dkeycloak.migration.provider=singleFile -Dkeycloak.migration.file=/tmp/realm.json -Dkeycloak.migration.strategy=IGNORE_EXISTING # # keycloak-db # using the same postgresql image we will use on OpenShift # keycloak-db: image: registry.access.redhat.com/rhscl/postgresql-10-rhel7:latest environment: POSTGRESQL_USER: ${KEYCLOAK_DB_USER} POSTGRESQL_PASSWORD: ${KEYCLOAK_DB_PASSWORD} POSTGRESQL_DATABASE: ${KEYCLOAK_DB_NAME} volumes: - keycloak-db-data:/var/lib/pgsql/data networks: - dcbr # # Weasyprint server for HTML to PDF printing # weasyprint: image: bcgovimages/weasyprint networks: - dcbr ports: - ${WEASYPRINT_PORT}:${WEASYPRINT_PORT} networks: dcbr: volumes: dcbr-data: keycloak-db-data: