Déploiement Minimal sur docker Swarm
Ci-dessous les choix effectués pour cet exemple, en rapport avec les différents fichiers
-
docker-compose.yml
-
le déploiement se fait sur une seule machine (aucune contraint de déploiement docker)
-
l’utilisation d’un réseau dc_network, non externe, qui sera donc créé en même temps que la stack datachain au lancement du script de démarrage.
-
l’utilisation de volume nommés docker : les volumes seront automatiquement provisionnés par docker lors du premier démarrage de la stack
-
Les paramètres mémoires de la JVM sont de 3Go pour le backend et 8Go pour spark
-
-
backend.env
-
L’url redis pointe vers une URL interne du reseau docker (dc-redis)
-
-
keycloak.env
-
Seules les URL sont précisées
-
-
spark.env
-
Les ressources allouées au spark (qui s’exécute en mode local) sont de 6 cpu et 8g de mémoire (reflété par les paramètres JAVA du service dans le ficher docker-compose)
-
le montage HDFS se fait vers un montage local (file:///data), dont le volume est précisé dans le fichier docker-compose
-
-
web-ui.env
-
config keycloak standard avec l’url public de keycloak à renseigner.
-
version: "3.7"
services:
dc_pg:
image: ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/pg:${PRODUCT_VERSION}
networks:
dc_network:
aliases:
- dc-pg
deploy:
mode: replicated
replicas: 1
volumes:
- pg_data:/var/lib/postgresql/data
dc_pg_migration:
image: ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/pg_migration:${PRODUCT_VERSION}
networks:
dc_network:
aliases:
- dc-pg-migration
environment:
- PG_HOST=dc-pg
deploy:
restart_policy:
condition: none
volumes:
- pg_dump:/data/pg_dump
dc_pg_expose:
image: ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/pg_expose:${PRODUCT_VERSION}
networks:
dc_network:
aliases:
- dc-pg-expose
deploy:
mode: replicated
replicas: 1
volumes:
- pg_expose:/var/lib/postgresql/data
dc_redis_cache:
image: redis:7.0-alpine
command: redis-server --loglevel warning
networks:
dc_network:
aliases:
- dc-redis
deploy:
mode: replicated
replicas: 1
dc_backend:
image: ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/backend:${PRODUCT_VERSION}
networks:
dc_network:
aliases:
- dc-backend
environment:
- JAVA_OPTIONS=-Xms1024M -Xmx3g -Duser.home=/opt/dev/work
env_file: backend.env
deploy:
mode: replicated
replicas: 1
dc_web_ui:
image: ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/web_ui:${PRODUCT_VERSION}
networks:
dc_network:
aliases:
- dc-web-ui
env_file: web_ui.env
ports:
- target: 80
published: 80
protocol: tcp
mode: host
deploy:
mode: replicated
replicas: 1
dc_spark:
image: ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/spark:${PRODUCT_VERSION}
networks:
dc_network:
aliases:
- dc-spark1
environment:
- JAVA_OPTIONS=-Xms1024M -Xmx8g -Duser.home=/opt/dev/work
env_file: spark.env
deploy:
mode: replicated
replicas: 1
volumes:
- hdfs:/data
dc_pg_keycloak:
image: ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/pg_keycloak:${PRODUCT_VERSION}
networks:
dc_network:
aliases:
- dc-pg-keycloak
deploy:
mode: replicated
replicas: 1
volumes:
- pg_keycloak:/var/lib/postgresql/data
dc_keycloak:
image: ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/keycloak:${PRODUCT_VERSION}
networks:
dc_network:
aliases:
- dc-keycloak
ports:
- target: 8080
published: 8080
protocol: tcp
mode: host
deploy:
mode: replicated
replicas: 1
env_file: keycloak.env
volumes:
pg_data:
pg_dump:
hdfs:
pg_expose:
pg_keycloak:
networks:
dc_network:
driver: overlay
driver_opts:
encrypted: ""
# URL public avec http ou https
# public URL with http or https
dc.app.url.web-ui=${DC_URL_PUBLIC}
# Configuration Keycloak
# Keycloak Configuration
keycloak.auth-server-url=http://dc-keycloak:8080/auth
# Configuration base de donnée (nom du serveur de base de donnée)
# Database configuration (database host)
dc.app.db.host=dc-pg
#
# Configuration du datasource d'exposition de donnée (nom du serveur de base de donnée)
# Expose Database configuration (database host)
spring.expose-datasource.host=dc-pg-expose
# Configuration Redis
# Redis configuration
dc.app.notification.urls=redis://dc-redis:6379
# Datachain Url
# Url de Datachain
DATACHAIN_CLIENT_URL=${DC_URL_PUBLIC}
# keycloak public Url
# Url public de keycloak
KEYCLOAK_FRONTEND_URL=${KC_URL_PUBLIC}/auth
# Configuration du contexte Spark (url accessible depuis le backend)
# Spark context Url
dc.app.context.url=http://dc-spark1:8090
# Configuration spark
# Déploiement Spark local sur 6 CPU cores
dc.app.spark.master=local[6]
# 6 CPU
dc.app.spark.cores.max=6
# 8
dc.app.spark.executor.memory=8g
# Configuration HDFS
dc.app.data-file.hdfs=file:///data
# Configuration notifications
dc.app.notification.urls=redis://dc-redis:6379
KEYCLOAK_CONFIG={"url": "${KC_URL_PUBLIC}/auth","realm": "dc-realm","clientId": "dc_front", "backendClientId": "dc_backend", "userRole" : "dc_user", "projectRole" : "dc_project", "adminRole" : "dc_admin", "memberRole" : "dc_member"}