Wiki source code of KeyCloak

Version 1.6 by chrisby on 2024/03/03 14:52

Show last authors
1 ###### Dockerfile
2
3 FROM quay.io/keycloak/keycloak:22.0.1 as builder
4 ENV KC_HEALTH_ENABLED=false
5 ENV KC_METRICS_ENABLED=false
6 ENV KC_DB=postgres
7 WORKDIR /opt/keycloak
8 RUN /opt/keycloak/bin/kc.sh build
9
10 FROM quay.io/keycloak/keycloak:22.0.1
11 COPY --from=builder /opt/keycloak/ /opt/keycloak/
12 ENTRYPOINT ["/opt/keycloak/bin/kc.sh"]
13
14 ###### docker-compose.yml
15
16 version: '3'
17
18 services:
19 traefik:
20 image: "traefik:v2.9"
21 container_name: keycloak-traefik
22 command:
23 - "--api.insecure=true"
24 - "--providers.docker=true"
25 - "--providers.docker.exposedbydefault=false"
26 - "--entrypoints.websecure.address=:443"
27 - "--certificatesresolvers.myresolver.acme.tlschallenge=true"
28 - "--certificatesresolvers.myresolver.acme.email=<your-email>"
29 - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
30 # Uncomment for generating fake certificates and enabling debugging. Used for development, not production.
31 # - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
32 #- "--log.level=DEBUG"
33 ports:
34 - "443:443"
35 volumes:
36 - "./data/letsencrypt:/letsencrypt"
37 - "/var/run/docker.sock:/var/run/docker.sock:ro"
38
39 keycloak-postgres:
40 image: postgres:13.2
41 container_name: keycloak-postgres
42 volumes:
43 - keycloak-postgres:/var/lib/postgresql/data
44 environment:
45 POSTGRES_DB: keycloak
46 POSTGRES_USER: keycloak
47 POSTGRES_PASSWORD: <enter-postgres-password>
48
49 mykeycloak:
50 build: ./
51 image: mykeycloak
52 container_name: keycloak-keycloak
53 command:
54 - start --optimized --proxy edge
55 environment:
56 KC_HOSTNAME: <subdomain>
57 KEYCLOAK_ADMIN: admin
58 KEYCLOAK_ADMIN_PASSWORD: <enter-admin-password>
59 KC_DB: postgres
60 KC_DB_URL: jdbc:postgresql://keycloak-postgres:5432/keycloak
61 KC_DB_USERNAME: keycloak
62 KC_DB_PASSWORD: <enter-postgres-password>
63 # KC_LOG_LEVEL: DEBUG
64 depends_on:
65 - keycloak-postgres
66 labels:
67 - "traefik.enable=true"
68 - "traefik.http.routers.keycloak.rule=Host(`<subdomain>`)"
69 - "traefik.http.routers.keycloak.entrypoints=websecure"
70 - "traefik.http.routers.keycloak.tls.certresolver=myresolver"
71 - "traefik.http.services.keycloak.loadbalancer.server.port=8080"
72
73 volumes:
74 keycloak-postgres:
75
76 ###### Instructions
77
78 * Execute `docker-compose up -d`
79 * Go to `https://<subdomain>`
80 * Login as 'admin' with password used for `<enter-admin-password>`.