RapidMiner(ラピッドマイナー)はデータ可視化、データ加工、モデル作成、評価、運用まで一括サポートする機械学習プラットフォームです。KSKアナリティクスはRapidMinerの正規販売代理店です。

Docker-composeテンプレート

ここで紹介されているテンプレートはシングルホストのRapidMiner AI Hubをデプロイするのに役立ちます。マルチホストでデプロイを行う場合は、Kubernetesテンプレートをご覧ください。

Docker-composeテンプレートをデプロイするには以下をダウンロードします。

設計通り、テンプレートは以下を含んだRapidMiner AI Hubのフル機能を提供します。

目次

システム要件

最低限の推移ハードウェア構成

必要とされるメモリ量は、RapidMiner AI Hubで処理されるデータ量に大きく依存します。RapidMinerサービス単体では、16GBくらいで実行できます。しかし、本番環境では、ユーザーのデータ量にもよりますが、現実的なユースケースからデータを分析すると、十分な機能をユーザーに提供するには32GB以上を推奨します。

各仮想、もしくは物理マシンは少なくとも以下が必要です。

  • クアッドコア
  • 32GB RAM
  • >20GB以上の空きディスク容量

Docker Desktop for Windows (または Mac)を使用している場合は、十分なメモリ量を割り当てられるかを確認してください。Docker Desktopのデフォルトの設定では、RapidMiner AI Hubを使用するには低すぎます。

手順

このテンプレートをデプロイするには、以下のステップで進めます。

1.まだDockerをインストールしていなければ、 Linux / WindowsにDockerをインストールしてください。

2.ZIPファイルをダウンロードします。ファイルを解凍し、以下の二つのファイルを確認します。
.env(先頭にドットが付いているため、通常このファイルは隠しファイルになっています。)
docker-compose.yml
・goフォルダ

3.以下で詳細に述べられているように、.envファイルの以下の変数を設定します。
・PUBLIC_URL
・SSO_PUBLIC_URL

4.my.rapidminer.comからライセンスの値をとり、.envファイルで以下の変数を設定します。
・SERVER_LICENSE
・GO_LICENSE

5.(オプションで)頻繁に使用される値を設定します。
・最初の管理者パスワードはKEYCLOAK_PASSWORD変数(デフォルト: “changeit”)を使用して設定できます。
・AUTH_SECRETの値は内部認証の暗号鍵に使用されます。デフォルトの値をBase64エンコード文字列に変更することをお勧めします。

6.URLやライセンスを設定した、ZIPファイルの中のこれらのファイルをDockerをインストールしたマシンであるサーバーホストへ転送します。

7.サーバーホストに接続し、この二つのファイルが含まれているディレクトリに移動します。

8.SSO設定が無効ではない場合(これがデフォルトです)、最初の起動前にプラットフォームデプロイメントを初期化する必要があります。初期化が完了するには1、2分かかります。その後、次のコマンドを実行します。docker-compose.ymlが含まれているディレクトリ内で、以下を入力します。


docker-compose up -d rm-init-svc

9.最後に、上記のコマンドが完了したら、次のコマンドを実行してスタックを起動しましょう。


docker-compose up -d

ホストでDockerイメージが利用できない場合、Docker Hubから自動的にダウンロードされます。追加のdocker-composeのヒントは、テクノロジー概要をご覧ください。

パブリックURL

デプロイされたスタックは、内部での通信のためや、(RapidMiner Studioやブラウザなど)外部クライアントが接続するために、有効なパブリックURLが必要です。最初の起動前に、.envファイル内のPUBLIC_URLとSSO_PUBLIC_URL環境変数にパブリックURLを設定します。

・http://localhost やhttp://127.0.0.1はサービス間の内部コンテナ同士の通信に使用されるため、これらの値の使用はサポートされていません。

・シングルホストにデプロイする場合は、http://192.168.1.101のようなホストのパブリックなIPアドレス、もしくはhttp://platform.rapidminer.comのようなこのIPアドレスに繋がるパブリックなホスト名を使用します。

・デプロイメントがデフォルトのHTTPやHTPPSポート(80や443)とリッスンできない場合、以下を行います。

  • ポート番号はhttp://platform.rapidminer.com:8080のように、PUBLIC_URLとSSO_PUBLIC_URL変数でも指定します。
  • 外部ポートのマッピングは、docker-compose.ymlファイルのrm-proxy-svcサービス定義で8080:80のように設定します。
  • 外部ポートは、docker-compose.ymlファイルのrm-server-svcに、PROXY_HTTP_PORTとPROXY_HTTPS_PORT変数を使用して、PROXY_HTTP_PORT=8080やPROXY_HTTPS_PORT=8443のように設定します。(最初の起動時に失敗した場合や、変更する必要がある場合、後からプロキシ設定の /rapidminer-home/configuration/standalone.xml ファイルを編集し、サービスを再起動する必要があります。)

・接続にはHTTPSを使用することが非常に好まれます。この場合、PUBLIC_URLとSSO_PUBLIC_URL変数は先頭にhttps://を用い、証明書チェーンと秘密鍵ファイルはcertificate.crtとprivate.keyのファイル名を用いてsslサブフォルダでPEM形式で提供される必要があります。デフォルトのファイル名は .env ファイルのProxyセクションにある環境変数を用いて変更できます。

デプロイメントが実行されると、設定されたリバースプロキシはデフォルトでは標準的なHTTP(80)ポートをリッスンし、HTTPS認証が設定されればHPPS(443)ポートでも行われます。

最初のログインの認証情報は.envファイル(KEYCLOAK_USER と KEYCLOAK_PASSWORD 変数)で設定されます。デフォルトでは、ユーザー名に”admin”、パスワードに”changeit”を使用してログインできます。

パブリックURLのランディングページより、RapidMiner AI Hubのすべてのサービスが利用できます。

 

 ※補足

タイムゾーンの変更

デフォルトでは、AI HubのタイムゾーンにはUTC(協定世界時)が使用されています。UTCでは日本の時刻とずれてしまうため、日本の時刻に合わせましょう。設定するには、.envファイルを開き、TZをAsia/Tokyoに変更します。


# Timezone setting
TZ=Asia/Tokyo

環境ファイル(.env)


# ############################################
#
# Global parameters
#
# ############################################

# Public domain of the deployment
PUBLIC_DOMAIN=platform.rapidminer.com

# Public URL of the deployment that will be used for external access (Public domain + protocol + port)
PUBLIC_URL=https://platform.rapidminer.com

# Public URL of the SSO endpoint that will be used for external access. In most cases it should be the same as the PUBLIC_URL
SSO_PUBLIC_URL=https://platform.rapidminer.com

# Enable/disable the service build into the RapidMiner cloud images, that updates the PUBLIC_URL and SSO_PUBLIC_URL variables to the new dynamic cloud hostname/IP address
AUTOMATIC_PUBLIC_URL_UPDATE_FOR_CLOUD_IMAGES=true

# Enable/disable the Legacy BASIC authentication support for REST endpoints, like webservices. (lowercase true/false)
LEGACY_REST_BASIC_AUTH_ENABLED=false

# Timezone setting
TZ=UTC

# ############################################
#
# Deployment parameters
#
# ############################################

# Prefix to use for docker registry
REGISTRY=rapidminer/

# Version of the Init container
INIT_VERSION=9.8.0

# Enable configuring server settings for Python Scripting extension
INIT_SHARED_CONDA_SETTINGS=true

# User migration settings for migrating from non-Keycloak-based deployments
USER_MIGRATION_ENABLED=True
USER_MIGRATION_DRY_RUN=False

# ############################################
#
# KeyCloak (SSO)
#
# ############################################

# Keycloak container version
KEYCLOAK_VERSION=9.8.0

# Keycloak database parameters
KC_DB=kcdb
KC_USER=kcdbuser
KC_PASSWORD=kcdbpass

# Default platform admin user credentials
KEYCLOAK_USER=admin
KEYCLOAK_PASSWORD=changeit

# SSO default parameters
SSO_IDP_REALM=master
SSO_SSL_REQUIRED=none

# ############################################
#
# Rapidminer server
#
# ############################################

SERVER_VERSION=9.8.0
SERVER_DBHOST=rm-postgresql-svc
SERVER_DBSCHEMA=rapidminer-server-db
SERVER_DBUSER=rmserver-db-user
SERVER_DBPASS=w61J784XSb24K4LRV97MbE16i8xa9O
SERVER_MAX_MEMORY=2048M
RMSERVER_SSO_CLIENT_ID=urn:rapidminer:server
RMSERVER_SSO_CLIENT_SECRET=
SERVER_LICENSE=
RAPIDMINER_SERVER_HOST=rm-server-svc
RAPIDMINER_SERVER_PORT=8080
RAPIDMINER_SERVER_URL=http://rm-server-svc:8080
AUTH_SECRET=TTY5MjUxbzRBN2ZIWThpNGVKNGo4V2xqOHk0dTNV
BROKER_ACTIVEMQ_USERNAME=amq-user
BROKER_ACTIVEMQ_PASSWORD=M69251o4A7fHY8i4eJ4j8Wlj8y4u3U

# ############################################
#
# Job Agent
#
# ############################################

JOBAGENT_QUEUE_ACTIVEMQ_URI=failover:(tcp://rm-server-svc:5672)
JOBAGENT_CONTAINER_COUNT=2
JOB_QUEUE=DEFAULT
JOBAGENT_CONTAINER_MEMORYLIMIT=2048
#RAPIDMINER_JOBAGENT_OPTS="-Djobagent.python.registryBaseUrl=http://platform-admin-webui-svc:1082/"
RAPIDMINER_JOBAGENT_OPTS=
RAPIDMINER_SERVER_PROTOCOL=http

# ############################################
#
# Proxy
#
# ############################################

PROXY_VERSION=9.8.0
JUPYTER_BACKEND=http://rm-jupyterhub-svc:8000
JUPYTER_URL_SUFFIX=/jupyter
GRAFANA_BACKEND=http://rm-grafana-svc:3000
GRAFANA_URL_SUFFIX=/grafana
PA_BACKEND=http://platform-admin-webui-svc:1082/
PA_URL_SUFFIX=/platform-admin
RTS_WEBUI_BACKEND=http://platform-admin-webui-svc:1082/
RTS_WEBUI_URL_SUFFIX=/rts-admin
RTS_SCORING_BACKEND=http://rts-agent-svc:8090/
RTS_SCORING_URL_SUFFIX=/rts
KEYCLOAK_BACKEND=http://rm-keycloak-svc:8080
LANDING_BACKEND=http://landing-page
TOKEN_BACKEND=http://rm-token-tool-svc
TOKEN_URL_SUFFIX=/get-token
ALLOW_LE=true
LE_BACKEND=http://letsencrypt-svc:84
PASSWORD_FILE_PATH=/etc/nginx/ssl/password.txt
HTTPS_CRT_PATH=/etc/nginx/ssl/certificate.crt
HTTPS_KEY_PATH=/etc/nginx/ssl/private.key
HTTPS_DH_PATH=/etc/nginx/ssl/dhparam.pem
PROXY_DATA_UPLOAD_LIMIT=10240M

# ############################################
#
# Jupyterhub
#
# ############################################

RM_JUPYTER_VERSION=9.8.0
JHUB_POSTGRES_HOST=rm-jupyterhub-db-svc
JHUB_POSTGRES_DB=jupyterhub
JHUB_POSTGRES_USER=jupyterhubdbuser
JHUB_POSTGRES_PASSWORD=FoExRExzQsL7UpgEYa5sO7mhiGhi3ne
JHUB_HOSTNAME=rm-jupyterhub-svc
JUPYTERHUB_CRYPT_KEY=e0084caa38f521cc985d675168bcf7b7137cf5b0d4a3e8b99d2e3542705584eb
JHUB_DEBUG=False
JHUB_TOKEN_DEBUG=False
JHUB_PROXY_DEBUG=False
JHUB_DB_DEBUG=False
JHUB_SPAWNER_DEBUG=False
JUPYTER_STACK_NAME=default
SSO_NB_UID_KEY=X_NB_UID
SSO_NB_GID_KEY=X_NB_GID
SSO_NB_CUSTOM_BIND_MOUNTS_KEY=X_NB_CUSTOM_BIND_MOUNTS
# Content should be in json format, use quotes here instead of apostrophes
#JUPYTER_NB_CUSTOM_BIND_MOUNTS={"/usr/share/doc/apt":"/tmp/apt","/usr/share/doc/mount/":"/tmp/mount"}
JUPYTER_NB_CUSTOM_BIND_MOUNTS=
DOCKER_NOTEBOOK_CPU_LIMIT=100
DOCKER_NOTEBOOK_MEM_LIMIT=2g
#k8s
#DOCKER_NOTEBOOK_MEM_LIMIT=2G
JHUB_SSO_CLIENT_ID=urn:rapidminer:jupyterhub
JHUB_SSO_CLIENT_SECRET=
JHUB_SPAWNER=dockerspawner
JHUB_API_PROTOCOL=http
JHUB_API_HOSTNAME=rm-jupyterhub-svc
JHUB_PROXY_PORT=8000
JHUB_API_PORT=8001
JHUB_APP_PORT=8081
JHUB_ENV_VOLUME_NAME=rm-coding-shared-vol
#JHUB_CUSTOM_CA_CERTS=${PWD}/ssl/deb_cacerts/
#JHUB_SPAWNER=kubespawner
#JHUB_K8S_CMD: '/entrypoint.sh'
#JHUB_K8S_ARGS: ''
#JHUB_K8S_NAMESPACE=advertisinganalytics
#JHUB_K8S_NODE_SELECTOR_NAME: 'rapidminer.customer'
#JHUB_K8S_NODE_SELECTOR_VALUE: 'rapidminer'
#JHUB_K8S_NOTEBOOK_STORAGE_ACCESS_MODE=ReadWriteOnce
#JHUB_K8S_NOTEBOOK_STORAGE_CAPACITY=5Gi
#JHUB_K8S_NOTEBOOK_STORAGE_CLASS=ms-ebs-us-west-2b
#JHUB_K8S_IMAGE_PULL_SECRET=rm-docker-login-secret
#JHUB_K8S_ENV_PVC_NAME=python-envs-pvc

# ############################################
#
# Radoop Proxy
#
# ############################################

RADOOP_PROXY_VERSION=1.2.1
# Authentication: 'server|jwt|superuser'
RADOOP_PROXY_AUTHENTICATION=superuser
RADOOP_PROXY_SUPERUSERNAME=proxyadmin
RADOOP_PROXY_SUPERUSERPASSWORD=changeit
RADOOP_PROXY_PORT=1081
RADOOP_PROXY_WORKERSPOOLSIZE=100
RADOOP_PROXY_SSL="off"

# ############################################
#
# Platform admin
#
# ############################################

PA_VERSION=9.8.0
PA_SSO_CLIENT_ID=urn:rapidminer:platform-admin
PA_SSO_CLIENT_SECRET=
PA_DISABLE_PYTHON=false
PA_DISABLE_RTS=false

#
# Coding Environment Storage
#
CES_VERSION=9.8.0

# ############################################
#
# Real-Time Scoring Agent
#
# ############################################

RTS_VERSION=9.8.0
RTSUI_VERSION=9.8.0
WAIT_FOR_LICENSES=1

# ############################################
#
# Grafana
#
# ############################################

RM_GRAFANA_VERSION=9.8.0
GRAFANA_SSO_CLIENT_ID=urn:rapidminer:grafana
GRAFANA_SSO_CLIENT_SECRET=

# ############################################
#
# TabGo
#
# ############################################

# Used for both TabGo and the TabGo proxy.
TABGO_VERSION=9.8.0

# Proxy specific settings.
TABGO_PROXY_PORT=4443
TABGO_BACKEND=http://rm-tabgo-svc

# Settings for the TabGo service.
TABGO_MAX_MEMORY=384m
TABGO_PORT=8090
# Rate limit for small requests (e.g., scoring a single data row). The default
# values limit the rate to 10 requests per 5 seconds.
TABGO_SMALL_REQUEST_LIMIT=10
TABGO_SMALL_REQUEST_INTERVAL=5
# Change the log level to DEBUG to log HTTP traffic routed through TabGo.
TABGO_LOG_LEVEL=INFO
# Additional Java options should only be used for debugging.
TABGO_JAVA_OPTIONS=

# ############################################
#
# LetsEncrypt Client
#
# ############################################

LE_VERSION=9.8.0

# ############################################
#
# Docker Deployment Manager
#
# ############################################

DDM_VERSION=9.8.0

# ############################################
#
# Landing page
#
# ############################################

RM_LANDING_VERSION=9.8.0
LANDING_SSO_CLIENT_ID=urn:rapidminer:landing-page
LANDING_SSO_CLIENT_SECRET=


# ############################################
#
# Token Tool
#
# ############################################

TOKEN_SSO_CLIENT_ID=urn:rapidminer:token-tool
TOKEN_SSO_CLIENT_SECRET=

# ############################################
#
# RapidMiner Go
#
# ############################################

## General setup
GO_LICENSE=
GO_AUTH_SECRET=dGhhbmt5b3Vmb3J1c2luZ2F1dG9tb2RlbG9ucHJlbWlzZTIwMTk=
GO_DB_HOST=rapidminer-automodel-db
GO_AMQ_URL=tcp://rapidminer-automodel-activemq:61616
GO_AMQ_USERNAME=next
GO_AMQ_PASSWORD=next
GO_JOB_QUEUE=rapiminder-automodeler-job-queue
GO_JOB_STATUS_QUEUE=rapidminer-automodeler-job-status-queue
GO_JOB_COMMAND_TOPIC=rapidminer-automodeler-job-command-topic
#_JAVA_OPTIONS='-Dlogging.level.root=DEBUG'
GO_JAVA_OPTIONS=

## Resource management

# RapidMiner Go is preconfigured to run on a host (or Docker engine) with 8GB
GO_JOB_CONTAINERS=1

## Docker images

GO_IMAGE_TAG_ROUTING=2.4.1-platform-9.8.0
GO_IMAGE_TAG_RMID=2.4.1
GO_IMAGE_TAG_AM=2.4.1
GO_IMAGE_TAG_JC=2.4.1
GO_IMAGE_TAG_ET=2.4.0

# ############################################
#
# GO ROUTING
#
# ############################################

GO_ROUTING_RMID_HOST_PORT_1=rapidminer-automodel-rmid:8080
GO_ROUTING_AM_HOST_PORT_1=rapidminer-automodeler:8080
GO_ROUTING_EVENT_HOST_PORT=rapidminer-ui-event-tracking:8080
# Docker's internal DNS server
GO_ROUTING_RESOLVER=127.0.0.11
GO_ROUTING_SERVER_NAME=localhost
GO_ROUTING_PROTOCOL=http

# ############################################
#
# GO RMID
#
# ############################################

GO_RMID_SPRING_PROFILES_ACTIVE=db-postgresql,is-saml,on-prem,branding
GO_RMID_FRONTEND_TRACKING_ENABLED=false
GO_RMID_TOKEN_MAX_AGE=86400
GO_RMID_LOGIN_TYPE=LOGIN_TYPE_EXTERNAL
GO_SSO_CLIENT_ID=urn:rapidminer:go
GO_RMID_SAML_KEYSTORE_PASSWORD=bXlrZXlwYXNz
GO_RMID_SAML_KEYSTORE_ALIAS=mykeyalias

# ############################################
#
# GO AUTOMODELER
#
# ############################################

GO_AUTOMODELER_SPRING_PROFILES_ACTIVE=db-postgresql,on-prem,branding
# Maximal Data file size given in bytes upto 2GB
GO_AUTOMODELER_SPRING_SERVLET_MULTIPART_MAX_FILE_SIZE=104857600
GO_AUTOMODELER_RMID_BASE_URL=http://rapidminer-automodel-rmid:8080
GO_AUTOMODELER_FRONTEND_TRACKING_ENABLED=true
GO_AUTOMODELER_FILESTORE_MIN_ROW_LIMIT=50
GO_AUTOMODELER_EXECUTION_TASK_LIMIT_PER_USER=4
# Maximal size of RapidMiner result set given in MB
GO_AUTOMODELER_EXECUTION_MAXIMUM_TOTAL_RESULT_SIZE=2000
GO_AUTOMODELER_DATA_IMPORT_MINIMUM_ATTRIBUTE_COUNT=3
GO_AUTOMODELER_DATA_IMPORT_MAXIMUM_ATTRIBUTE_COUNT=500

# ############################################
#
# GO JC
#
# ############################################

GO_JC_SPRING_PROFILES_ACTIVE=on-prem

# ############################################
#
# GO AMQ
#
# ############################################

GO_ACTIVEMQ_CONFIG_DEFAULTACCOUNT=false
GO_ACTIVEMQ_ADMIN_LOGIN=admin
GO_ACTIVEMQ_ADMIN_PASSWORD=admin

# ############################################
#
# GO DB
#
# ############################################

GO_POSTGRES_PASSWORD=pgadminpass
GO_POSTGRES_USER=pgadmin
GO_AUTOMODELER_DB_USER=cookie
GO_AUTOMODELER_DB_PASSWORD=cookiepass
GO_AUTOMODELER_DB_NAME=cookie
GO_RMID_DB_USER=rmid
GO_RMID_DB_PASSWORD=rmid
GO_RMID_DB_NAME=rmid


定義ファイル(docker-compose.yml)


version: "3.5"
services:
  rm-proxy-svc:
    image: "${REGISTRY}rapidminer-proxy:${PROXY_VERSION}" 
    hostname: rm-proxy-svc
    restart: always
    environment:
      - KEYCLOAK_BACKEND=${KEYCLOAK_BACKEND}
      - RMSERVER_BACKEND=${RAPIDMINER_SERVER_URL}
      - JUPYTER_BACKEND=${JUPYTER_BACKEND}
      - JUPYTER_URL_SUFFIX=${JUPYTER_URL_SUFFIX}
      - GRAFANA_BACKEND=${GRAFANA_BACKEND}
      - GRAFANA_URL_SUFFIX=${GRAFANA_URL_SUFFIX}
      - PA_BACKEND=${PA_BACKEND}
      - PA_URL_SUFFIX=${PA_URL_SUFFIX}
      - TOKEN_BACKEND=${TOKEN_BACKEND}
      - TOKEN_URL_SUFFIX=${TOKEN_URL_SUFFIX}
      - ALLOW_LE=${ALLOW_LE}
      - LE_BACKEND=${LE_BACKEND}
      - RTS_WEBUI_BACKEND=${RTS_WEBUI_BACKEND}
      - RTS_WEBUI_URL_SUFFIX=${RTS_WEBUI_URL_SUFFIX}
      - RTS_SCORING_BACKEND=${RTS_SCORING_BACKEND}
      - RTS_SCORING_URL_SUFFIX=${RTS_SCORING_URL_SUFFIX}
      - SSO_PUBLIC_URL=${SSO_PUBLIC_URL}
      - SSO_IDP_REALM=${SSO_IDP_REALM}
      - RTS_BASIC_AUTH=true
      - LANDING_BACKEND=${LANDING_BACKEND}
      - PASSWORD_FILE_PATH=${PASSWORD_FILE_PATH}
      - HTTPS_CRT_PATH=${HTTPS_CRT_PATH}
      - HTTPS_KEY_PATH=${HTTPS_KEY_PATH}
      - HTTPS_DH_PATH=${HTTPS_DH_PATH}
      #- DEBUG_CONF_INIT=true
      #- WAIT_FOR_DHPARAM=true
      - PROXY_DATA_UPLOAD_LIMIT=${PROXY_DATA_UPLOAD_LIMIT}
    ports:
      - 80:80
      - 443:443
    networks:
      rm-go-proxy-net:
        aliases:
         - rm-proxy-svc
         - ${PUBLIC_DOMAIN}
      rm-platform-int-net:
        aliases:
         - rm-proxy-svc
         - ${PUBLIC_DOMAIN}
      jupyterhub-user-net: 
        aliases: 
         - ${PUBLIC_DOMAIN}
    volumes:
      - ./ssl:/etc/nginx/ssl
      - platform-admin-uploaded-vol:/rapidminer/platform-admin/uploaded/

  letsencrypt-svc:
    image: "${REGISTRY}rm-letsencrypt-client:${LE_VERSION}"
    hostname: rm-letsencrypt-client-svc
    restart: always
    environment:
    - PUBLIC_URL=${PUBLIC_URL}
    - LETSENCRYPT_HOME=/certificates/
    - DOMAIN=${PUBLIC_URL}
    - WEBMASTER_MAIL=devops@rapidminer.com
    - TZ=Europe/Budapest
#    ports:
#    - 84:84
    networks:
      rm-platform-int-net:
        aliases:
        - rm-letsencrypt-client-svc
    volumes:
    - ./ssl:/etc/letsencrypt/


  rm-keycloak-db-svc:
    image: postgres:9.6
    restart: always
    hostname: rm-keycloak-db-svc
    environment:
      - POSTGRES_DB=${KC_DB}
      - POSTGRES_USER=${KC_USER}
      - POSTGRES_PASSWORD=${KC_PASSWORD}
    volumes:
      - keycloak-postgresql-vol:/var/lib/postgresql/data
    networks:
      rm-idp-db-net:
        aliases:
         - rm-keycloak-db-svc

  rm-keycloak-svc:
    image: ${REGISTRY}rapidminer-keycloak:${KEYCLOAK_VERSION}
    restart: always
    hostname: rm-keycloak-svc
    environment:
      - DB_VENDOR=POSTGRES
      - DB_ADDR=rm-keycloak-db-svc
      - DB_DATABASE=${KC_DB}
      - DB_USER=${KC_USER}
      - DB_SCHEMA=public
      - DB_PASSWORD=${KC_PASSWORD}
      - KEYCLOAK_USER=${KEYCLOAK_USER}
      - KEYCLOAK_PASSWORD=${KEYCLOAK_PASSWORD}
      - PROXY_ADDRESS_FORWARDING=true
      #- KEYCLOAK_LOGLEVEL=DEBUG
      #- ROOT_LOGLEVEL=DEBUG
      #- JDBC_PARAMS=ssl=true
    depends_on:
      - rm-keycloak-db-svc
      - rm-proxy-svc
    networks:
      rm-platform-int-net:
        aliases:
          - rm-keycloak-svc
      rm-idp-db-net:
        aliases:
          - rm-keycloak-svc

  rm-init-svc:
    image: "${REGISTRY}rapidminer-deployment-init:${INIT_VERSION}"
    restart: "no"
    hostname: rm-keycloak-init-svc
    depends_on:
      - rm-keycloak-svc
      - rm-postgresql-svc
    environment:
      - LEGACY_REST_BASIC_AUTH_ENABLED=${LEGACY_REST_BASIC_AUTH_ENABLED}
      - PUBLIC_URL=${PUBLIC_URL}
      - SSO_PUBLIC_URL=${SSO_PUBLIC_URL}
    volumes: 
      - ./.env:/.env
      - ./docker-compose.yml:/docker-compose.yml:ro
      - keycloak-admin-cli-vol:/root/.keycloak/
      - deployed-services-vol:/rapidminer/deployed-services/
      - ./go/saml:/go/saml/
      - ./go/licenses:/go/licenses/
    networks:
      rm-platform-int-net:
        aliases:
          - rm-init-svc
      rm-server-db-net:
        aliases:
          - rm-init-svc

  rm-postgresql-svc:
    image: "postgres:9.6"
    hostname: rm-postgresql-svc
    restart: always
    environment:
     - POSTGRES_DB=${SERVER_DBSCHEMA}
     - POSTGRES_USER=${SERVER_DBUSER}
     - POSTGRES_PASSWORD=${SERVER_DBPASS}
    volumes:
     - rm-postgresql-vol:/var/lib/postgresql/data
    networks:
      rm-server-db-net:
        aliases:
         - rm-postgresql-svc

  rm-server-svc:
    image: "${REGISTRY}rapidminer-server:${SERVER_VERSION}"
    hostname: rm-server-svc
    restart: always
    environment:
      - PA_BASE_URL=${PA_BACKEND}
      - PA_SYNC_DEBUG=False
#      This may be useful, if server and platform-admin are not on an internal network
#      - PA_SYNC_AUTH_USER=admin
#      - PA_SYNC_AUTH_PASS=changeit
      - DBHOST=${SERVER_DBHOST}
      - DBSCHEMA=${SERVER_DBSCHEMA}
      - DBUSER=${SERVER_DBUSER}
      - DBPASS=${SERVER_DBPASS}
      - SSO_PUBLIC_URL=${SSO_PUBLIC_URL}
      - SSO_IDP_REALM=${SSO_IDP_REALM}
      - SSO_CLIENT_ID=${RMSERVER_SSO_CLIENT_ID}
      - SSO_CLIENT_SECRET=${RMSERVER_SSO_CLIENT_SECRET}
      - SSO_SSL_REQUIRED=${SSO_SSL_REQUIRED}
      - LEGACY_REST_BASIC_AUTH_ENABLED=${LEGACY_REST_BASIC_AUTH_ENABLED}
      - SERVER_MAX_MEMORY=${SERVER_MAX_MEMORY}
      - BROKER_ACTIVEMQ_USERNAME=${BROKER_ACTIVEMQ_USERNAME}
      - BROKER_ACTIVEMQ_PASSWORD=${BROKER_ACTIVEMQ_PASSWORD}
      - JOBSERVICE_AUTH_SECRET=${AUTH_SECRET}
      - JUPYTER_URL_SUFFIX=${JUPYTER_URL_SUFFIX}
      - GRAFANA_URL_SUFFIX=${GRAFANA_URL_SUFFIX}
#      - PROXY_HTTP_PORT=80
#      - PROXY_HTTPS_PORT=443
      - TZ=${TZ}
      - CES_VERSION=${CES_VERSION}
    volumes:
      - rm-server-bootstrap-vol:/bootstrap.d
      - rm-server-home-vol:/persistent-rapidminer-home
      - rm-coding-shared-vol:/opt/coding-shared/:ro
    depends_on:
      - rm-postgresql-svc
    networks:
      jupyterhub-user-net:
        aliases:
         - rm-server-svc
      rm-platform-int-net:
        aliases:
         - rm-server-svc
      rm-server-db-net:
        aliases:
         - rm-server-svc

  rm-server-job-agent-svc:
    image: "${REGISTRY}rapidminer-execution-jobagent:${SERVER_VERSION}"
    hostname: rm-server-job-agent-svc
    restart: always
    environment:
      - RAPIDMINER_SERVER_HOST=${RAPIDMINER_SERVER_HOST}
      - RAPIDMINER_SERVER_PROTOCOL=${RAPIDMINER_SERVER_PROTOCOL}
      - RAPIDMINER_SERVER_PORT=${RAPIDMINER_SERVER_PORT}
      - JOBAGENT_QUEUE_ACTIVEMQ_URI=${JOBAGENT_QUEUE_ACTIVEMQ_URI}
      - JOBAGENT_QUEUE_ACTIVEMQ_USERNAME=${BROKER_ACTIVEMQ_USERNAME}
      - JOBAGENT_QUEUE_ACTIVEMQ_PASSWORD=${BROKER_ACTIVEMQ_PASSWORD}
      - JOBAGENT_AUTH_SECRET=${AUTH_SECRET}
      - JOBAGENT_CONTAINER_COUNT=${JOBAGENT_CONTAINER_COUNT}
      - JOB_QUEUE=${JOB_QUEUE}
      - JOBAGENT_CONTAINER_MEMORYLIMIT=${JOBAGENT_CONTAINER_MEMORYLIMIT}
      - RAPIDMINER_JOBAGENT_OPTS=${RAPIDMINER_JOBAGENT_OPTS}
      - TZ=${TZ}
      - INIT_SHARED_CONDA_SETTINGS=${INIT_SHARED_CONDA_SETTINGS}
      - CES_VERSION=${CES_VERSION}
    volumes:
      - rm-server-bootstrap-ja-vol:/bootstrap.d
      - rm-coding-shared-vol:/opt/coding-shared/:ro
    depends_on:
      - rm-server-svc
    networks:
      rm-platform-int-net:
        aliases:
         - rm-server-job-agent-svc

  rm-radoop-proxy-svc:
    image: "${REGISTRY}radoop-proxy:${RADOOP_PROXY_VERSION}"
    hostname: rm-radoop-proxy-svc
    restart: always
    environment:
      - AUTHENTICATION=${RADOOP_PROXY_AUTHENTICATION}
      - SUPERUSERNAME=${RADOOP_PROXY_SUPERUSERNAME}
      - SUPERUSERPASSWORD=${RADOOP_PROXY_SUPERUSERPASSWORD}
      - PORT=${RADOOP_PROXY_PORT}
      - WORKERSPOOLSIZE=${RADOOP_PROXY_WORKERSPOOLSIZE}
      - SSL=${RADOOP_PROXY_SSL}
      - SERVERHOST=${RAPIDMINER_SERVER_HOST}
      - SERVERPORT=${RAPIDMINER_SERVER_PORT}
      #- SCHEME
    ports:
      # has to be the same number for internal and external ports.
      - ${RADOOP_PROXY_PORT}:${RADOOP_PROXY_PORT}
    #depends_on:
      #- rm-server-svc

  platform-admin-webui-svc:
    image: "${REGISTRY}rapidminer-platform-admin-webui:${PA_VERSION}"
    hostname: platform-admin-webui-svc
    restart: always
    environment:
      - PA_URL_SUFFIX=${PA_URL_SUFFIX}
      - RTS_SCORING_URL_SUFFIX=${RTS_SCORING_URL_SUFFIX}
      - RTS_SCORING_BACKEND=${RTS_SCORING_BACKEND}
      - SSO_PUBLIC_URL=${SSO_PUBLIC_URL}
      - SSO_IDP_REALM=${SSO_IDP_REALM}
      - SSO_CLIENT_ID=${PA_SSO_CLIENT_ID}
      - SSO_CLIENT_SECRET=${PA_SSO_CLIENT_SECRET}
      - PA_DISABLE_PYTHON=${PA_DISABLE_PYTHON}
      - PA_DISABLE_RTS=${PA_DISABLE_RTS}
      - DEBUG=false
      - CES_VERSION=${CES_VERSION}
    volumes:
      - platform-admin-uploaded-vol:/var/www/html/uploaded/
      - rts-licenses-vol:/var/www/html/uploaded/licenses/
    networks:
      jupyterhub-user-net:
        aliases:
         - platform-admin-webui-svc
      rm-platform-int-net:
        aliases:
         - platform-admin-webui-svc
      rm-coding-environment-storage-net:
        aliases:
         - platform-admin-webui-svc

  rts-agent-svc:
    image: "${REGISTRY}rapidminer-execution-scoring:${RTS_VERSION}"
    hostname: rts-agent-svc
    restart: always
    environment:
      - WAIT_FOR_LICENSES=${WAIT_FOR_LICENSES}
      - TZ=${TZ}
    volumes:
      - rts-deployments-vol:/rapidminer-scoring-agent/home/deployments/
      - rts-licenses-vol:/rapidminer-scoring-agent/home/resources/licenses/rapidminer-scoring-agent/
    networks:
      rm-platform-int-net:
        aliases:
         - rts-agent-svc

  rm-jupyterhub-db-svc:
    image: postgres:9.6
    hostname: rm-jupyterhub-db-svc
    restart: always
    environment:
      - POSTGRES_DB=${JHUB_POSTGRES_DB}
      - POSTGRES_USER=${JHUB_POSTGRES_USER}
      - POSTGRES_PASSWORD=${JHUB_POSTGRES_PASSWORD}
    volumes:
      - jupyterhub-postgresql-vol:/var/lib/postgresql/data
    networks:
      jupyterhub-db-net:
        aliases:
         - rm-jupyterhub-db-svc

  rm-jupyterhub-svc:
    image: "${REGISTRY}rapidminer-jupyterhub-jupyterhub:${RM_JUPYTER_VERSION}"
    hostname: rm-jupyterhub-svc
    restart: always
    environment:
      - RM_JUPYTER_VERSION=${RM_JUPYTER_VERSION}
      - JHUB_HOSTNAME=${JHUB_HOSTNAME}
      - SERVER_BASE_URL=${RAPIDMINER_SERVER_URL}
      - POSTGRES_HOST=${JHUB_POSTGRES_HOST}
      - POSTGRES_DB=${JHUB_POSTGRES_DB}
      - POSTGRES_USER=${JHUB_POSTGRES_USER}
      - POSTGRES_PASSWORD=${JHUB_POSTGRES_PASSWORD}
      - DOCKER_NOTEBOOK_IMAGE=${REGISTRY}rapidminer-jupyter_notebook:${RM_JUPYTER_VERSION}
      - JUPYTERHUB_CRYPT_KEY=${JUPYTERHUB_CRYPT_KEY}
      - DOCKER_NOTEBOOK_CPU_LIMIT=${DOCKER_NOTEBOOK_CPU_LIMIT}
      - DOCKER_NOTEBOOK_MEM_LIMIT=${DOCKER_NOTEBOOK_MEM_LIMIT}
      - JHUB_DEBUG=${JHUB_DEBUG}
      - JHUB_TOKEN_DEBUG=${JHUB_TOKEN_DEBUG}
      - JHUB_PROXY_DEBUG=${JHUB_PROXY_DEBUG}
      - JHUB_DB_DEBUG=${JHUB_DB_DEBUG}
      - JHUB_SPAWNER_DEBUG=${JHUB_SPAWNER_DEBUG}
      - JUPYTER_STACK_NAME=${JUPYTER_STACK_NAME}
      - SSO_NB_UID_KEY=${SSO_NB_UID_KEY}
      - SSO_NB_GID_KEY=${SSO_NB_GID_KEY}
      - SSO_NB_CUSTOM_BIND_MOUNTS_KEY=${SSO_NB_CUSTOM_BIND_MOUNTS_KEY}
      - JUPYTER_NB_CUSTOM_BIND_MOUNTS=${JUPYTER_NB_CUSTOM_BIND_MOUNTS}      
      - SSO_PUBLIC_URL=${SSO_PUBLIC_URL}
      - SSO_IDP_REALM=${SSO_IDP_REALM}
      - SSO_CLIENT_ID=${JHUB_SSO_CLIENT_ID}
      - SSO_CLIENT_SECRET=${JHUB_SSO_CLIENT_SECRET}
      - PUBLIC_URL=${PUBLIC_URL}
      - JUPYTER_URL_SUFFIX=${JUPYTER_URL_SUFFIX}
      - SSO_USERNAME_KEY=preferred_username
      - SSO_RESOURCE_ACCESS_KEY=resource_access
      - JHUB_DEFAULT_ENV_NAME=aihub-${RM_JUPYTER_VERSION}-python
      - JHUB_SPAWNER=${JHUB_SPAWNER}
      - JHUB_API_PROTOCOL=${JHUB_API_PROTOCOL}
      - JHUB_API_HOSTNAME=${JHUB_API_HOSTNAME}
      - JHUB_PROXY_PORT=${JHUB_PROXY_PORT}
      - JHUB_API_PORT=${JHUB_API_PORT}
      - JHUB_ENV_VOLUME_NAME=${JHUB_ENV_VOLUME_NAME}
#      - JHUB_CUSTOM_CA_CERTS=${JHUB_CUSTOM_CA_CERTS}
#      - JHUB_K8S_NAMESPACE=${JHUB_K8S_NAMESPACE}
#      - JHUB_K8S_NODE_SELECTOR_NAME=${JHUB_K8S_NODE_SELECTOR_NAME}
#      - JHUB_K8S_NODE_SELECTOR_VALUE=${JHUB_K8S_NODE_SELECTOR_VALUE}
#      - JHUB_K8S_NOTEBOOK_STORAGE_ACCESS_MODE=${JHUB_K8S_NOTEBOOK_STORAGE_ACCESS_MODE}
#      - JHUB_K8S_NOTEBOOK_STORAGE_CAPACITY=${JHUB_K8S_NOTEBOOK_STORAGE_CAPACITY}
#      - JHUB_K8S_NOTEBOOK_STORAGE_CLASS=${JHUB_K8S_NOTEBOOK_STORAGE_CLASS}
#      - JHUB_K8S_IMAGE_PULL_SECRET=${JHUB_K8S_IMAGE_PULL_SECRET}
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:rw
    depends_on:
      - rm-jupyterhub-db-svc
      - rm-server-svc
    networks:
      rm-platform-int-net:
        aliases:
         - rm-jupyterhub-svc
      jupyterhub-db-net:
        aliases:
         - rm-jupyterhub-svc
      jupyterhub-user-net:
        aliases:
         - rm-jupyterhub-svc

  rm-coding-environment-storage-svc:
    image: "${REGISTRY}rapidminer-coding-environment-storage:${CES_VERSION}"
    hostname: rm-coding-environment-storage-svc
    restart: always
    environment:
      - PA_BASE_URL=${PA_BACKEND}
      - PA_SYNC_DEBUG=False
    networks:
      rm-coding-environment-storage-net:
        aliases:
         - rm-coding-environment-storage-svc
    volumes:
      - rm-coding-shared-vol:/opt/coding-shared/

  rm-grafana-svc:
    image: ${REGISTRY}rapidminer-grafana:${RM_GRAFANA_VERSION}
    hostname: rm-grafana-svc
    restart: always
    environment:
      - PUBLIC_URL=${PUBLIC_URL}
      - GRAFANA_URL_SUFFIX=${GRAFANA_URL_SUFFIX}
      #- GF_LOG_LEVEL=debug
      - SSO_PUBLIC_URL=${SSO_PUBLIC_URL}
      - SSO_IDP_REALM=${SSO_IDP_REALM}
      - SSO_CLIENT_ID=${GRAFANA_SSO_CLIENT_ID}
      - SSO_CLIENT_SECRET=${GRAFANA_SSO_CLIENT_SECRET}
      - TZ=${TZ}
    volumes:
      - grafana-home:/var/lib/grafana
    depends_on:
      - rm-grafana-proxy-svc
    networks:
      rm-platform-int-net:
        aliases:
         - rm-grafana-svc

  rm-grafana-proxy-svc:
    image: ${REGISTRY}rapidminer-grafana-proxy:${RM_GRAFANA_VERSION}
    hostname: rm-grafana-proxy-svc
    restart: always
    environment:
      - RAPIDMINER_URL=${RAPIDMINER_SERVER_URL}
    depends_on:
      - rm-server-svc
    networks:
      rm-platform-int-net:
        aliases:
         - rm-grafana-proxy-svc

  rm-tabgo-proxy-svc:
    image: ${REGISTRY}rapidminer-tabgo-proxy:${TABGO_VERSION}
    hostname: rm-tabgo-proxy-svc
    restart: always
    environment:
      - HTTPS_CRT_PATH=${HTTPS_CRT_PATH}
      - HTTPS_KEY_PATH=${HTTPS_KEY_PATH}
      - TABGO_BACKEND=${TABGO_BACKEND}
      - TABGO_PORT=${TABGO_PORT}
    ports:
      - ${TABGO_PROXY_PORT}:443
    depends_on:
      - rm-proxy-svc
    volumes:
      - ./ssl:/etc/nginx/ssl
    networks:
      rm-platform-int-net:
        aliases:
         - rm-tabgo-proxy-svc
    
  rm-tabgo-svc:
    image: ${REGISTRY}rapidminer-tabgo:${TABGO_VERSION}
    restart: always
    hostname: rm-tabgo-svc
    environment:
      - TABGO_MAX_MEMORY=${TABGO_MAX_MEMORY}
      - TABGO_RMS_HOSTNAME=${RAPIDMINER_SERVER_URL}
      - TABGO_GO_HOSTNAME=${PUBLIC_URL}
      - TABGO_SMALL_REQUEST_LIMIT=${TABGO_SMALL_REQUEST_LIMIT}
      - TABGO_SMALL_REQUEST_INTERVAL=${TABGO_SMALL_REQUEST_INTERVAL}
      - TABGO_LOG_LEVEL=${TABGO_LOG_LEVEL}
      - _JAVA_OPTIONS=${TABGO_JAVA_OPTIONS}
    networks:
      rm-platform-int-net:
        aliases:
         - rm-tabgo-svc

  landing-page:
    image: ${REGISTRY}rapidminer-deployment-landing-page:${RM_LANDING_VERSION}
    restart: always
    hostname: landing-page
    environment:
      - SSO_PUBLIC_URL=${SSO_PUBLIC_URL}
      - SSO_IDP_REALM=${SSO_IDP_REALM}
      - SSO_CLIENT_ID=${LANDING_SSO_CLIENT_ID}
      - SSO_CLIENT_SECRET=${LANDING_SSO_CLIENT_SECRET}
      - DEBUG=false
    volumes:
      - rm-landing-page-vol:/var/www/html/uploaded/
      - deployed-services-vol:/rapidminer/deployed-services/
    networks:
      rm-platform-int-net:
        aliases:
         - landing-page

  rm-token-tool-svc:
    image: ${REGISTRY}rapidminer-deployment-landing-page:${RM_LANDING_VERSION}
    restart: always
    hostname: rm-token-tool
    environment:      
    - PUBLIC_URL=${PUBLIC_URL}
    - SSO_PUBLIC_URL=${SSO_PUBLIC_URL}               
    - SSO_IDP_REALM=${SSO_IDP_REALM}
    - SSO_CLIENT_ID=${TOKEN_SSO_CLIENT_ID}
    - SSO_CLIENT_SECRET=${TOKEN_SSO_CLIENT_SECRET}
    - DEBUG=false
    - SSO_CUSTOM_SCOPE=openid info offline_access
    - CUSTOM_URL_SUFFIX=${TOKEN_URL_SUFFIX}
    - CUSTOM_CONTENT=get-token
    volumes:
      - rm-token-tool-vol:/var/www/html/uploaded/
    networks:
      rm-platform-int-net:
        aliases:
        - rm-token-tool


  # ###############################################
  #
  # RapidMiner GO
  #
  # ###############################################

  # Frontend and API router
  rapidminer-automodel-routing:
    image: rapidminer/rapidminer-automodel-routing:${GO_IMAGE_TAG_ROUTING}
    hostname: rapidminer-automodel-routing
    #ports:
    #  - "30000:80"
    environment:
      RMID_HOST_PORT_1: ${GO_ROUTING_RMID_HOST_PORT_1}
      AM_HOST_PORT_1: ${GO_ROUTING_AM_HOST_PORT_1}
      EVENT_HOST_PORT: ${GO_ROUTING_EVENT_HOST_PORT}
      RESOLVER: ${GO_ROUTING_RESOLVER}
      SERVER_NAME: ${GO_ROUTING_SERVER_NAME}
      PROTOCOL: ${GO_ROUTING_PROTOCOL}
    depends_on:
      - rapidminer-automodeler
      - rapidminer-automodel-rmid
    restart: always
    networks:
      rm-go-proxy-net:
        aliases:
         - rapidminer-automodel-routing
      rm-go-int-net:
        aliases:
         - rapidminer-automodel-routing
  rapidminer-automodel-rmid:
    image: rapidminer/rapidminer-automodel-rmid:${GO_IMAGE_TAG_RMID}
    hostname: rapidminer-automodel-rmid
    environment:
      SPRING_PROFILES_ACTIVE: ${GO_RMID_SPRING_PROFILES_ACTIVE}
      DB_HOST: ${GO_DB_HOST}
      DB_USER: ${GO_RMID_DB_USER}
      DB_PASSWORD: ${GO_RMID_DB_PASSWORD}
      DB_NAME: ${GO_RMID_DB_NAME}
      _JAVA_OPTIONS: ${GO_JAVA_OPTIONS}
      BASE_URL: ${PUBLIC_URL}
      AUTH_SECRET: ${GO_AUTH_SECRET}
      RMID_FRONTEND_TRACKING_ENABLED: ${GO_RMID_FRONTEND_TRACKING_ENABLED}
      TOKEN_MAX_AGE: ${GO_RMID_TOKEN_MAX_AGE}
      LOGIN_TYPE: ${GO_RMID_LOGIN_TYPE}
      SAML_ENTITY_ID: ${GO_SSO_CLIENT_ID}
      SAML_KEYSTORE_PASSWORD: ${GO_RMID_SAML_KEYSTORE_PASSWORD}
      SAML_KEYSTORE_ALIAS: ${GO_RMID_SAML_KEYSTORE_ALIAS}
      RMID_FRONTEND_AUTO_LOGIN: "true"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/rmid/system/health"]
    restart: always
    volumes:
      - ./go/saml:/rapidminer-automodel-rmid/saml
      - ./go/branding/rmid:/rapidminer-automodeler/branding
    depends_on: 
      - rapidminer-automodel-db
    networks:
      rm-go-int-net:
        aliases:
         - rapidminer-automodel-rmid 
  rapidminer-automodeler:
    image: rapidminer/rapidminer-automodeler:${GO_IMAGE_TAG_AM}
    hostname: rapidminer-automodeler
    environment:
      SPRING_PROFILES_ACTIVE: ${GO_AUTOMODELER_SPRING_PROFILES_ACTIVE}
      SPRING_SERVLET_MULTIPART_MAX_FILE_SIZE: ${GO_AUTOMODELER_SPRING_SERVLET_MULTIPART_MAX_FILE_SIZE}
      _JAVA_OPTIONS: ${GO_JAVA_OPTIONS}
      DB_HOST: ${GO_DB_HOST}
      DB_USER: ${GO_AUTOMODELER_DB_USER}
      DB_PASSWORD: ${GO_AUTOMODELER_DB_PASSWORD}
      DB_NAME: ${GO_AUTOMODELER_DB_NAME}
      BASE_URL: ${PUBLIC_URL}
      RMID_BASE_URL: ${GO_AUTOMODELER_RMID_BASE_URL}
      AMQ_URL: ${GO_AMQ_URL}
      AMQ_USERNAME: ${GO_AMQ_USERNAME}
      AMQ_PASSWORD: ${GO_AMQ_PASSWORD}
      AUTH_SECRET: ${GO_AUTH_SECRET}
      AUTOMODELER_FRONTEND_TRACKING_ENABLED: ${GO_AUTOMODELER_FRONTEND_TRACKING_ENABLED}
      AUTOMODELER_FILESTORE_MIN_ROW_LIMIT: ${GO_AUTOMODELER_FILESTORE_MIN_ROW_LIMIT}
      AUTOMODELER_EXECUTION_TASK_LIMIT_PER_USER: ${GO_AUTOMODELER_EXECUTION_TASK_LIMIT_PER_USER}
      AUTOMODELER_EXECUTION_QUEUE_LIMIT_PER_USER: ${GO_JOB_CONTAINERS}
      AUTOMODELER_EXECUTION_MAXIMUM_TOTAL_RESULT_SIZE: ${GO_AUTOMODELER_EXECUTION_MAXIMUM_TOTAL_RESULT_SIZE}
      AUTOMODELER_DATA_IMPORT_MINIMUM_ATTRIBUTE_COUNT: ${GO_AUTOMODELER_DATA_IMPORT_MINIMUM_ATTRIBUTE_COUNT}
      AUTOMODELER_DATA_IMPORT_MAXIMUM_ATTRIBUTE_COUNT: ${GO_AUTOMODELER_DATA_IMPORT_MAXIMUM_ATTRIBUTE_COUNT}
      JOB_QUEUE: ${GO_JOB_QUEUE}
      JOB_STATUS_QUEUE: ${GO_JOB_STATUS_QUEUE}
      JOB_COMMAND_TOPIC: ${GO_JOB_COMMAND_TOPIC}
    volumes:
      - rapidminer_automodel_shared:/rapidminer-automodeler/shared
      - ./go/licenses:/rapidminer-automodeler/shared/licenses
      - ./go/branding/am:/rapidminer-automodeler/branding
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/am/system/health"]
    restart: always
    depends_on: 
      - rapidminer-automodel-activemq
      - rapidminer-automodel-db
    networks:
      rm-go-int-net:
        aliases:
         - rapidminer-automodeler
  rapidminer-automodel-job-container:
    image: rapidminer/rapidminer-automodel-job-container:${GO_IMAGE_TAG_JC}
    hostname: rapidminer-automodel-job-container
    environment:
      # Be aware that additional env vars might be set in Dockerfile
      #      (e.g. JOBCONTAINER_BASEDIR: /rapidminer-automodel-job-container)
      SPRING_PROFILES_ACTIVE: ${GO_JC_SPRING_PROFILES_ACTIVE}
      _JAVA_OPTIONS: ${GO_JAVA_OPTIONS}
      JOB_QUEUE: ${GO_JOB_QUEUE}
      JOB_STATUS_QUEUE: ${GO_JOB_STATUS_QUEUE}
      JOB_COMMAND_TOPIC: ${GO_JOB_COMMAND_TOPIC}
      AMQ_URL: ${GO_AMQ_URL}
      AMQ_USERNAME: ${GO_AMQ_USERNAME}
      AMQ_PASSWORD: ${GO_AMQ_PASSWORD}
    volumes:
      - rapidminer_automodel_shared:/rapidminer-automodel-job-container/shared
      - ./go/licenses:/rapidminer-automodel-job-container/shared/licenses
    depends_on:
      - rapidminer-automodeler
    restart: always
    networks:
      rm-go-int-net:
        aliases:
         - rapidminer-automodel-job-container
  rapidminer-ui-event-tracking:
    image: rapidminer/rapidminer-ui-event-tracking:${GO_IMAGE_TAG_ET}
    hostname: rapidminer-ui-event-tracking
    environment:
      _JAVA_OPTIONS: ${GO_JAVA_OPTIONS}
      DB_HOST: ${GO_DB_HOST}
      DB_USER: ${GO_AUTOMODELER_DB_USER}
      DB_PASSWORD: ${GO_AUTOMODELER_DB_PASSWORD}
      DB_NAME: ${GO_AUTOMODELER_DB_NAME}
    depends_on:
      - rapidminer-automodeler
    restart: always
    networks:
      rm-go-int-net:
        aliases:
         - rapidminer-ui-event-tracking
  rapidminer-automodel-db:
    image: postgres:9.6.6
    hostname: rapidminer-automodel-db
    volumes:
      - rapidminer_automodel_dbdata:/var/lib/postgresql/data
      - ./go/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
    networks:
      rm-go-int-net:
        aliases:
         - rapidminer-automodel-db
    environment:
      AUTOMODELER_DB_USER: ${GO_AUTOMODELER_DB_USER}
      AUTOMODELER_DB_PASSWORD: ${GO_AUTOMODELER_DB_PASSWORD}
      AUTOMODELER_DB_NAME: ${GO_AUTOMODELER_DB_NAME}
      RMID_DB_USER: ${GO_RMID_DB_USER}
      RMID_DB_PASSWORD: ${GO_RMID_DB_PASSWORD}
      RMID_DB_NAME: ${GO_RMID_DB_NAME}
      POSTGRES_PASSWORD: ${GO_POSTGRES_PASSWORD}
      POSTGRES_USER: ${GO_POSTGRES_USER}
    #ports:
    #  - "5432:5432"
  rapidminer-automodel-activemq:
    image: webcenter/activemq:5.14.3
    hostname: rapidminer-automodel-activemq
    environment:
      ACTIVEMQ_CONFIG_DEFAULTACCOUNT: ${GO_ACTIVEMQ_CONFIG_DEFAULTACCOUNT}
      ACTIVEMQ_ADMIN_LOGIN: ${GO_ACTIVEMQ_ADMIN_LOGIN}
      ACTIVEMQ_ADMIN_PASSWORD: ${GO_ACTIVEMQ_ADMIN_PASSWORD}
      ACTIVEMQ_OWNER_LOGIN: ${GO_AMQ_USERNAME}
      ACTIVEMQ_OWNER_PASSWORD: ${GO_AMQ_PASSWORD}
    networks:
      rm-go-int-net:
        aliases:
         - rapidminer-automodel-activemq
    #ports:
    #  - "8161:8161"
    #  - "61616:61616"
    #  - "61613:61613"



volumes:
  rm-postgresql-vol:
  rm-server-bootstrap-vol:
  rm-server-home-vol:
  rm-server-bootstrap-ja-vol:
  platform-admin-uploaded-vol:
  rts-deployments-vol:
  rts-licenses-vol:
  jupyterhub-postgresql-vol:
  grafana-home:
  keycloak-postgresql-vol:
  keycloak-admin-cli-vol:
  rm-landing-page-vol:
  rm-token-tool-vol:
  deployed-services-vol:
  rm-coding-shared-vol:
    name: ${JHUB_ENV_VOLUME_NAME}
  rapidminer_automodel_dbdata:
  rapidminer_automodel_shared:

networks:
  rm-platform-int-net:
  rm-idp-db-net:
  jupyterhub-db-net:
  rm-server-db-net:
  rm-coding-environment-storage-net:
  jupyterhub-user-net:
    name: jupyterhub-user-net-${JUPYTER_STACK_NAME}
  rm-go-int-net:
  rm-go-proxy-net:

API認証に失敗しました メールまたはパスワードが正しくありません メールアドレスは必須です パスワードは必須です
キャンセル