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.