Wiki source code of KeyCloak

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