Wiki source code of KeyCloak

Version 1.2 by chrisby on 2023/11/18 14:58

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