version: '3.9' services: postgres-c1: image: postgres:14-alpine ports: - 5432:5432 environment: - POSTGRES_PASSWORD=inesdata - POSTGRES_USER=inesdata - POSTGRES_DB=inesdata volumes: - pgdata-c1:/var/lib/postgresql/data - ./resources/db-init/asset-schema.sql:/docker-entrypoint-initdb.d/asset-schema.sql - ./resources/db-init/contract-definition-schema.sql:/docker-entrypoint-initdb.d/contract-definition-schema.sql - ./resources/db-init/contract-negotiation-schema.sql:/docker-entrypoint-initdb.d/contract-negotiation-schema.sql - ./resources/db-init/data-plane-schema.sql:/docker-entrypoint-initdb.d/data-plane-schema.sql - ./resources/db-init/edr-index-schema.sql:/docker-entrypoint-initdb.d/edr-index-schema.sql - ./resources/db-init/policy-definition-schema.sql:/docker-entrypoint-initdb.d/policy-definition-schema.sql - ./resources/db-init/transfer-process-schema.sql:/docker-entrypoint-initdb.d/transfer-process-schema.sql healthcheck: test: [ "CMD-SHELL", "pg_isready -U inesdata" ] interval: 5s timeout: 30s retries: 10 postgres-c2: image: postgres:14-alpine ports: - 5433:5432 environment: - POSTGRES_PASSWORD=inesdata - POSTGRES_USER=inesdata - POSTGRES_DB=inesdata volumes: - pgdata-c2:/var/lib/postgresql/data - ./resources/db-init/asset-schema.sql:/docker-entrypoint-initdb.d/asset-schema.sql - ./resources/db-init/contract-definition-schema.sql:/docker-entrypoint-initdb.d/contract-definition-schema.sql - ./resources/db-init/contract-negotiation-schema.sql:/docker-entrypoint-initdb.d/contract-negotiation-schema.sql - ./resources/db-init/data-plane-schema.sql:/docker-entrypoint-initdb.d/data-plane-schema.sql - ./resources/db-init/edr-index-schema.sql:/docker-entrypoint-initdb.d/edr-index-schema.sql - ./resources/db-init/policy-definition-schema.sql:/docker-entrypoint-initdb.d/policy-definition-schema.sql - ./resources/db-init/transfer-process-schema.sql:/docker-entrypoint-initdb.d/transfer-process-schema.sql healthcheck: test: [ "CMD-SHELL", "pg_isready -U inesdata" ] interval: 5s timeout: 30s retries: 10 postgres-keycloak: image: postgres:14-alpine ports: - 5434:5432 environment: - POSTGRES_PASSWORD=keycloak - POSTGRES_USER=keycloak - POSTGRES_DB=keycloak volumes: - pgdata-keycloak:/var/lib/postgresql/data healthcheck: test: [ "CMD-SHELL", "pg_isready -U keycloak" ] interval: 5s timeout: 30s retries: 10 minio-c1: image: minio/minio ports: - '9000:9000' - '9001:9001' volumes: - mdata-c1:/data environment: - MINIO_ROOT_USER=inesdata - MINIO_ROOT_PASSWORD=inesdata - MINIO_DEFAULT_BUCKETS=bucket-connector-1 command: server --console-address ":9001" /data healthcheck: test: timeout 5s bash -c ':> /dev/tcp/127.0.0.1/9000' || exit 1 interval: 30s timeout: 20s retries: 3 minio-c2: image: minio/minio ports: - '9010:9000' - '9011:9011' volumes: - mdata-c2:/data environment: - MINIO_ROOT_USER=inesdata - MINIO_ROOT_PASSWORD=inesdata - MINIO_DEFAULT_BUCKETS=bucket-connector-2 command: server --console-address ":9011" /data healthcheck: test: timeout 5s bash -c ':> /dev/tcp/127.0.0.1/9000' || exit 1 interval: 30s timeout: 20s retries: 3 setup-minio: image: minio/mc depends_on: - minio-c1 - minio-c2 entrypoint: > /bin/sh -c " /usr/bin/mc alias set minio-c1 http://minio-c1:9000 inesdata inesdata; /usr/bin/mc admin user svcacct add minio-c1 inesdata --access-key DrJ6PmnJ3QtlxYowRSLi --secret-key gjaVnJstoeV4bWLrJkmswKBMIZxY10PjZOJhp2qk; /usr/bin/mc mb minio-c1/bucket-connector-1; /usr/bin/mc alias set minio-c2 http://minio-c2:9000 inesdata inesdata; /usr/bin/mc admin user svcacct add minio-c2 inesdata --access-key wEfyrv2vH7Wj3ON03g8V --secret-key JlHVGgSgeRkbs6WtKTugR4I5uU7oA1VRf8kBtrGd; /usr/bin/mc mb minio-c2/bucket-connector-2; exit 0; " http-proxy: image: mendhak/http-https-echo:31 environment: - HTTP_PORT=4000 ports: - "4000:4000" healthcheck: test: wget --no-verbose --tries=1 --spider http://localhost:4000/health/live || exit 1 interval: 30s timeout: 20s retries: 3 keycloak: image: quay.io/keycloak/keycloak:24.0.2 volumes: - ./resources/keycloak/dataspace-realm.json:/opt/keycloak/data/import/dataspace-realm.json environment: KC_HOSTNAME: keycloak KC_HOSTNAME_PORT: 8080 KC_HOSTNAME_STRICT_BACKCHANNEL: "false" KC_DB: postgres KC_DB_URL: jdbc:postgresql://postgres-keycloak/keycloak KC_DB_USERNAME: keycloak KC_DB_PASSWORD: keycloak KEYCLOAK_ADMIN: admin KEYCLOAK_ADMIN_PASSWORD: inesdata KC_HEALTH_ENABLED: "true" KC_LOG_LEVEL: ERROR KEYCLOAK_LOGLEVEL: ERROR healthcheck: test: ['CMD-SHELL', '[ -f /tmp/HealthCheck.java ] || echo "public class HealthCheck { public static void main(String[] args) throws java.lang.Throwable { System.exit(java.net.HttpURLConnection.HTTP_OK == ((java.net.HttpURLConnection)new java.net.URL(args[0]).openConnection()).getResponseCode() ? 0 : 1); } }" > /tmp/HealthCheck.java && java /tmp/HealthCheck.java http://localhost:8080/health/live'] interval: 15s timeout: 2s retries: 15 command: start-dev --import-realm ports: - 8080:8080 depends_on: postgres-keycloak: condition: service_healthy connector-c1: image: ghcr.io/oeg-upm/oeg-upm/inesdata-connector:develop ports: - '19191:19191' - '19192:19192' - '19193:19193' - '19194:19194' - '19291:19291' volumes: - ./resources:/opt/connector/resources environment: - EDC_KEYSTORE=/opt/connector/resources/certs/store.pfx - EDC_KEYSTORE_PASSWORD=inesdata - EDC_VAULT=/opt/connector/resources/configuration/connector-c1-vault.properties - EDC_FS_CONFIG=/opt/connector/resources/configuration/connector-c1-configuration.properties depends_on: keycloak: condition: service_healthy postgres-c1: condition: service_healthy minio-c1: condition: service_healthy http-proxy: condition: service_healthy connector-c2: image: ghcr.io/oeg-upm/oeg-upm/inesdata-connector:develop ports: - '29191:29191' - '29192:29192' - '29193:29193' - '29194:29194' - '29291:29291' volumes: - ./resources:/opt/connector/resources environment: - EDC_KEYSTORE=/opt/connector/resources/certs/store.pfx - EDC_KEYSTORE_PASSWORD=inesdata - EDC_VAULT=/opt/connector/resources/configuration/connector-c2-vault.properties - EDC_FS_CONFIG=/opt/connector/resources/configuration/connector-c2-configuration.properties depends_on: postgres-c2: condition: service_healthy minio-c2: condition: service_healthy http-proxy: condition: service_healthy keycloak: condition: service_healthy connector-interface-c1: image: ghcr.io/oeg-upm/inesdata-connector-interface:develop ports: - '8001:8080' environment: - MANAGEMENT_API_URL=http://localhost:19193/management - CATALOG_URL=http://localhost:19193/management/federatedcatalog - STORAGE_ACCOUNT=company2assets - STORAGE_LINK_TEMPLATE=storageexplorer://v=1 - APP_THEME=theme-1 - OAUTH2_ISSUER=http://keycloak:8080/realms/dataspace - OAUTH2_REDIRECT_PATH=/inesdata-connector-interface - OAUTH2_CLIENT_ID=dataspace-users - OAUTH2_SCOPE=openid profile email - OAUTH2_RESPONSE_TYPE=code - OAUTH2_SHOW_DEBUG_INFO=true - OAUTH2_ALLOWED_URLS=http://localhost:8001,http://localhost:19193,http://connector-c1:8001 connector-interface-c2: image: ghcr.io/oeg-upm/inesdata-connector-interface:develop ports: - '8002:8080' environment: - MANAGEMENT_API_URL=http://localhost:29193/management - CATALOG_URL=http://localhost:29193/management/federatedcatalog - STORAGE_ACCOUNT=company2assets - STORAGE_LINK_TEMPLATE=storageexplorer://v=1 - APP_THEME=theme-2 - OAUTH2_ISSUER=http://keycloak:8080/realms/dataspace - OAUTH2_REDIRECT_PATH=/inesdata-connector-interface - OAUTH2_CLIENT_ID=dataspace-users - OAUTH2_SCOPE=openid profile email - OAUTH2_RESPONSE_TYPE=code - OAUTH2_SHOW_DEBUG_INFO=true - OAUTH2_ALLOWED_URLS=http://localhost:8002,http://localhost:29193,http://connector-c1:8002 volumes: pgdata-c1: driver: local pgdata-c2: driver: local pgdata-keycloak: driver: local mdata-c1: driver: local mdata-c2: driver: local