Vollständige Docker Umgebung

Es folgt eine beispielhafte Konfiguration, mit der alle Microservices gebündelt auf einem einzigen Docker-Host eingerichtet werden können.

Weitere Details zur Konfiguration jedes einzelnen Microservices erfolgen dann auf den folgenden Seiten. Jede der folgenden Seiten behandelt einen oder mehrere Microservices.

docker-compose Umgebung

Unsere Docker Umgebung wird hauptsächlich durch eine Reihe von Konfigurationsdateien gesteuert. Diese im Folgenden beschriebenen Dateien können von NLI gebündelt als zip-Archiv bereitgestellt werden.

Das Setup der hier beschriebenen Umgebung basiert auf einem docker-compose file. Diese Konfiguration definiert die einzelnen Container, deren Sichtbarkeit und die einzubindenden Dateien.

Die docker-compose Umgebung besteht letztlich aus einer Verzeichnisstruktur, die die einzelnen im Folgenden beschriebenen Dateien enthält. Die Verzeichnisstruktur stellt sich wie folgt dar:

| base/
  |- revision-service/
  |  |- application.yml
  |- b2b-revisioninfo-ui/
  |  |- keycloak.json
  |- b2b-tomcat/
  |  |- lib/
  |  |  |- [DB-JDBC-Treiber].jar
  |  |- tomcat_all/
  |  |  |- index/
  |  |     |- full/
  |  |     |- arc/
  |  |     |- ccm/
  |  |- b2bbp-engine.xml
  |  |- keycloak.json
  |- b2b-ui/
  |  |- keycloak.json
  |- admin-ui/
  |  |- keycloak.json
  |- index-management-service/
  |  |- application.yml
  |- index-management-ui/
  |  |- keycloak.json
  |- fss/
  |  |- conf/
  |     |- application.yml
  |     |- application-secure.yml
  |- fss-ui/
  |  |- keycloak.json
  |- usermessages-service/
  |  |- application.yml
  |- b2b-usermessages-ui/
  |  |- keycloak.json
  |- b2b-portal-ui/
  |  |- keycloak.json
  |  |- portal-config.json
  |- docker-compose.yml
  |- .env
  |- system.json

Diese Dokumentation basiert auf der folgenden docker-compose.yml:

version: '3.7'
services:
  # Container-Definition für die keycloak-Instanz
  keycloak:
    image: ${NEXUS}/keycloak:2020-11-10
    restart: always
    ports:
      # Port unter dem der keycloak (auch von außen) erreichbar ist
      - ${KEYCLOAK_PORT}:8080
    environment:
      # Admin-Zugang für den keycloak
      - KEYCLOAK_USER=admin
      - KEYCLOAK_PASSWORD=admin
    volumes:
      # mount point für die keycloak DB
      - ./keycloak/data/:/opt/jboss/keycloak/standalone/data
  revision:
    image: ${NEXUS}/revision:2020-11-16
    environment:
      TZ: ${TIME_ZONE}
    volumes:
      - ./revision-service/application.yml:/lib/application.yml
  revision-ui:
    image: ${NEXUS}/b2b-revisioninfo-ui:2020-11-12
    restart: always
    ports:
      - 1188:8080
    environment:
      TZ: ${TIME_ZONE}
    volumes:
      - ./b2b-revisioninfo-ui/keycloak.json:/usr/share/nginx/html/B2B-RevisionInfo-UI/assets/config/keycloak.json
      - ./b2b-revisioninfo-ui/system.json:/usr/share/nginx/html/B2B-RevisionInfo-UI/assets/config/system.json
      - ./b2b-revisioninfo-ui/logs/host.access.log:/var/log/nginx/host.access.log
      - ./b2b-revisioninfo-ui/logs/host.error.log:/var/log/nginx/host.error.log
    depends_on:
      - revision
  b2b:
    image: ${NEXUS}/b2b:2020-11-17
    restart: always
    hostname: b2b
    ports:
      # Port unter dem die B2B-Instanz (auch von außen) erreichbar ist
      - ${B2B_PORT}:8080
    environment:
      REVISION_INFO_SERVER_URL: http://revision:8080
      SECURE_WITH_KEYCLOAK: "true"
      TZ: ${TIME_ZONE}
    volumes:
      # mount point für die zu verwendende B2B-DB-Konfiguration
      - ./b2b-tomcat/b2bbp-engine.xml:/usr/local/tomcat/conf/Catalina/localhost/b2bbp-engine.xml
      # mount point für die zu verwendende B2B-keycloak-Konfiguration
      - ./b2b-tomcat/keycloak.json:/usr/local/tomcat/conf/keycloak.json
      # mount für die logs
      - ./b2b-tomcat/tomcat_all/logs:${LOGS}
      # mount points für die zu verwendende B2B-Indizes
      - ./b2b-tomcat/tomcat_all/index/full:${FUL_IDX_PATH}
      - ./b2b-tomcat/tomcat_all/index/arc:${ARC_IDX_PATH}
      - ./b2b-tomcat/tomcat_all/index/ccm:${CCM_IDX_PATH}
      # mount point für den zu verwendenden B2B-DB-Treiber
      - ./b2b-tomcat/lib/${DB_DRV_FILE}:/usr/local/tomcat/lib/${DB_DRV_FILE}
  # Container-Definition für die B2B-New-UI-Instanz
  b2b-ui:
    image: ${NEXUS}/b2b-ui:2020-11-13
    restart: always
    ports:
      # Port unter dem die B2B-New-UI-Instanz (auch von außen) erreichbar ist
      - ${NUI_PORT}:8080
    environment:
      TZ: ${TIME_ZONE}
    volumes:
      # mount point für die zu verwendende B2B-New-UI-keycloak-Konfiguration
      - ./b2b-ui/keycloak.json:/usr/share/nginx/html/B2B-UI/assets/config/keycloak.json
      - ./system.json:/usr/share/nginx/html/B2B-UI/assets/config/system.json
      - ./b2b-ui/logs/host.access.log:/var/log/nginx/host.access.log
      - ./b2b-ui/logs/host.error.log:/var/log/nginx/host.error.log
    depends_on:
      - b2b
  b2b-admin-ui:
    image: ${NEXUS}/admin-ui:2020-11-16
    restart: always
    ports:
      - 1184:8080
    environment:
      TZ: ${TIME_ZONE}
    volumes:
      - ./admin-ui/keycloak.json:/usr/share/nginx/html/B2B-Admin-UI/assets/config/keycloak.json
      - ./system.json:/usr/share/nginx/html/B2B-Admin-UI/assets/config/system.json
      - ./admin-ui/logs/host.access.log:/var/log/nginx/host.access.log
      - ./admin-ui/logs/host.error.log:/var/log/nginx/host.error.log
    depends_on:
      - b2b
  index:
    image: ${NEXUS}/indexmanagement:2020-10-14
    ports:
      - 8090:8080
    environment:
      TZ: ${TIME_ZONE}
    volumes:
      - ./b2b-tomcat/tomcat_all/index:/index
      - ./index-management-service/application.yml:/lib/application.yml
  index-ui:
    image: ${NEXUS}/index-management-ui:2020-10-14
    restart: always
    ports:
      - 8094:8080
    environment:
      TZ: ${TIME_ZONE}
    volumes:
      - ./index-management-ui/keycloak.json:/usr/share/nginx/html/B2B-Index-Management-UI/assets/config/keycloak.json
      - ./system.json:/usr/share/nginx/html/B2B-Index-Management-UI/assets/config/system.json
      - ./b2b-index-management-ui/logs/host.access.log:/var/log/nginx/host.access.log
      - ./b2b-index-management-ui/logs/host.error.log:/var/log/nginx/host.error.log
    depends_on:
      - index
  fss:
    image: ${NEXUS_ERP}/fss:2020-11-16
    restart: always
    environment:
      TZ: ${TIME_ZONE}
    volumes:
      - ./fss/conf:/opt/securityserver/conf
      - ./fss/logs:/opt/securityserver/logs
  fss-ui:
    image: ${NEXUS_ERP}/fss-ui:2020-11-16
    restart: always
    ports:
      - 1186:8080
    environment:
      TZ: ${TIME_ZONE}
    volumes:
      - ./fss-ui/keycloak.json:/usr/share/nginx/html/FSS-UI/assets/config/keycloak.json
      - ./fss-ui/system.json:/usr/share/nginx/html/B2B-UI/assets/config/system.json
      - ./fss-ui/logs/host.access.log:/var/log/nginx/host.access.log
      - ./fss-ui/logs/host.error.log:/var/log/nginx/host.error.log
    depends_on:
      - fss
  notification:
    image: ${NEXUS}/message:2020-11-12
    environment:
      TZ: ${TIME_ZONE}
    volumes:
      - ./usermessages-service/application.yml:/lib/application.yml
  notification-ui:
    image: ${NEXUS}/user-messages-ui:2020-11-12
    restart: always
    ports:
      - 1190:8080
    environment:
      TZ: ${TIME_ZONE}
    volumes:
      - ./b2b-usermessages-ui/keycloak.json:/usr/share/nginx/html/User-Messages-UI/assets/config/keycloak.json
      - ./b2b-usermessages-ui/system.json:/usr/share/nginx/html/User-Messages-UI/assets/config/system.json
      - ./b2b-usermessages-ui/logs/host.access.log:/var/log/nginx/host.access.log
      - ./b2b-usermessages-ui/logs/host.error.log:/var/log/nginx/host.error.log
    depends_on:
      - notification
  portal-ui:
    image: ${NEXUS}/portal-ui:2020-11-12
    restart: always
    ports:
      - 1192:8080
    environment:
      TZ: ${TIME_ZONE}
    volumes:
      - ./b2b-portal-ui/keycloak.json:/usr/share/nginx/html/B2B-Portal-UI/assets/config/keycloak.json
      - ./b2b-portal-ui/system.json:/usr/share/nginx/html/B2B-Portal-UI/assets/config/system.json
      - ./b2b-portal-ui/portal-config.json:/usr/share/nginx/html/B2B-Portal-UI/assets/config/portal-config.json
      - ./b2b-portal-ui/logs/host.access.log:/var/log/nginx/host.access.log
      - ./b2b-portal-ui/logs/host.error.log:/var/log/nginx/host.error.log

Die oben aufgeführte docker-compose.yml beinhaltet verschiedene Variablen “${Variable}”. Diese Variablen dienen der Auslagerung von speziellen Bedingungen. Diese Variablen sind in der Datei .env enthalten und werden während des Starts der Container via docker-compose angewendet. Für die oben aufgeführte docker-compose.yml sieht die .env wie folgt aus:

NEXUS=docker-nob-erf.next-level-apps.com
NEXUS_ERP=docker-nob-erp.next-level-apps.com
TIME_ZONE=Europe/Berlin
KEYCLOAK_PORT=8080
B2B_PORT=8081
NUI_PORT=8082
FUL_IDX_PATH=/usr/local/tomcat_all/index/full
ARC_IDX_PATH=/usr/local/tomcat_all/index/archive
CCM_IDX_PATH=/usr/local/tomcat_all/index/ccm
LOGS=/usr/local/tomcat_all/logs
DB_DRV_FILE=postgresql-42.2.16.jar

Weiterhin werden in der oben aufgeführten docker-compose.yml verschiedenen Dateien referenziert. Sowohl die angegebenen Verzeichnisse der einzelnen Dateien, als auch die Dateien an sich, sind Bestandteil der docker-compose Umgebung und werden in den Abschnitten der konkreten Applikationen aufgeführt und erläutert.

View Me   Edit Me