Table of Contents
Informations importantes
- Nécéssite le stack pour traefik voir ici : https://slash-root.fr/docker-swarm-stack-traefik/
- Cette stack est faites pour du développement (avec persistance des données) et non de la production
- Bien modifier ce qu'il faut dans le stack (voir commentaires)
Fichier stack.yml
version: '3.3'
services:
app:
image: quay.io/keycloak/keycloak:latest
security_opt:
- no-new-privileges:true
command: start-dev
environment:
PROXY_ADDRESS_FORWARDING: "true"
KC_FEATURES: token-exchange
KC_PROXY: passthrough
KEYCLOAK_ADMIN: admin
# Indiquer un mot de passe pour le compte admin sur l'application keycloak
KEYCLOAK_ADMIN_PASSWORD: MotDePasseTresSecure
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /etc/localtime:/etc/localtime:ro
# Indiquer les volumes à monter. Si le volume est inexistant, il sera créé automatiquement. Attention si contexte de cluster (swarm), penser à placer une contrainte de label.
- conf:/opt/keycloak/conf
- data:/opt/keycloak/data
- providers:/opt/keycloak/providers
- themes:/opt/keycloak/themes
networks:
# Indispensable pour communiquer avec traefik
- traefik-public
deploy:
#resources:
#limits:
#cpus: '0.50'
#memory: 1024M
#reservations:
#cpus: '0.25'
#memory: 512M
placement:
constraints:
- node.labels.keycloak_quay-io_conf == true
- node.labels.keycloak_quay-io_data == true
- node.labels.keycloak_quay-io_providers == true
- node.labels.keycloak_quay-io_themes == true
labels:
# Activation de traefik
- traefik.enable=true
- traefik.docker.network=traefik-public
- traefik.constraint-label=traefik-public
# Indiquer l'URL de l'application (keycloak.example.com)
- traefik.http.routers.keycloak_quay-io-http.rule=Host(`keycloak.example.com`)
- traefik.http.routers.keycloak_quay-io-http.entrypoints=http
- traefik.http.routers.keycloak_quay-io-http.middlewares=https-redirect
# Indiquer l'URL de l'application (keycloak.example.com)
- traefik.http.routers.keycloak_quay-io-https.rule=Host(`keycloak.example.com`)
- traefik.http.routers.keycloak_quay-io-https.entrypoints=https
- traefik.http.routers.keycloak_quay-io-https.tls=true
- traefik.http.routers.keycloak_quay-io-https.tls.certresolver=le
- traefik.http.middlewares.hsts-headers.headers.stsSeconds=315360000
- traefik.http.middlewares.hsts-headers.headers.stsPreload=true
- traefik.http.middlewares.hsts-headers.headers.stsIncludeSubdomains=true
- traefik.http.middlewares.hsts-headers.headers.customFrameOptionsValue=SAMEORIGIN
- traefik.http.middlewares.hsts-headers.headers.sslRedirect=true
- traefik.http.middlewares.hsts-headers.headers.forceSTSHeader=true
- traefik.http.middlewares.hsts-headers.headers.referrerPolicy=same-origin
- traefik.http.routers.keycloak_quay-io-https.middlewares=hsts-headers
- traefik.http.services.keycloak_quay-io.loadbalancer.server.port=8080
networks:
traefik-public:
external: true
volumes:
conf:
driver: local
data:
driver: local
providers:
driver: local
themes:
driver: local
Déploiement
docker stack deploy -c stack.yml keycloak
2 commentaires