Skip to content

Commit ae043a8

Browse files
chore(spring-keycloak-example): add support to docker
1 parent 084c68e commit ae043a8

8 files changed

Lines changed: 252 additions & 0 deletions

File tree

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# Include any files or directories that you don't want to be copied to your
2+
# container here (e.g., local build artifacts, temporary files, etc.).
3+
#
4+
# For more help, visit the .dockerignore file reference guide at
5+
# https://docs.docker.com/go/build-context-dockerignore/
6+
7+
**/.DS_Store
8+
**/.classpath
9+
**/.dockerignore
10+
**/.env
11+
**/.factorypath
12+
**/.git
13+
**/.gitignore
14+
**/.idea
15+
**/.project
16+
**/.sts4-cache
17+
**/.settings
18+
**/.toolstarget
19+
**/.vs
20+
**/.vscode
21+
**/.next
22+
**/.cache
23+
**/*.dbmdl
24+
**/*.jfm
25+
**/charts
26+
**/docker-compose*
27+
**/compose.y*ml
28+
**/Dockerfile*
29+
**/secrets.dev.yaml
30+
**/values.dev.yaml
31+
**/vendor
32+
LICENSE
33+
README.md
34+
**/*.class
35+
**/*.iml
36+
**/*.ipr
37+
**/*.iws
38+
**/*.log
39+
**/.apt_generated
40+
**/.gradle
41+
**/.gradletasknamecache
42+
**/.nb-gradle
43+
**/.springBeans
44+
**/build
45+
**/dist
46+
**/gradle-app.setting
47+
**/nbbuild
48+
**/nbdist
49+
**/nbproject/private
50+
**/target
51+
*.ctxt
52+
.mtj.tmp
53+
.mvn/timing.properties
54+
buildNumber.properties
55+
dependency-reduced-pom.xml
56+
hs_err_pid*
57+
pom.xml.next
58+
pom.xml.releaseBackup
59+
pom.xml.tag
60+
pom.xml.versionsBackup
61+
release.properties
62+
replay_pid*

spring-keycloak-example/Dockerfile

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
FROM eclipse-temurin:21-jdk-jammy as deps
2+
3+
WORKDIR /build
4+
5+
COPY --chmod=0755 mvnw mvnw
6+
COPY .mvn/ .mvn/
7+
8+
RUN --mount=type=bind,source=pom.xml,target=pom.xml \
9+
--mount=type=cache,target=/root/.m2 ./mvnw dependency:go-offline -DskipTests
10+
11+
FROM deps as package
12+
13+
WORKDIR /build
14+
15+
COPY ./src src/
16+
RUN --mount=type=bind,source=pom.xml,target=pom.xml \
17+
--mount=type=cache,target=/root/.m2 \
18+
./mvnw package -DskipTests && \
19+
mv target/$(./mvnw help:evaluate -Dexpression=project.artifactId -q -DforceStdout)-$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout).jar target/app.jar
20+
21+
FROM package as extract
22+
23+
WORKDIR /build
24+
25+
RUN java -Djarmode=layertools -jar target/app.jar extract --destination target/extracted
26+
27+
FROM eclipse-temurin:21-jre-jammy AS final
28+
29+
ARG UID=10001
30+
RUN adduser \
31+
--disabled-password \
32+
--gecos "" \
33+
--home "/nonexistent" \
34+
--shell "/sbin/nologin" \
35+
--no-create-home \
36+
--uid "${UID}" \
37+
appuser
38+
USER appuser
39+
40+
COPY --from=extract build/target/extracted/dependencies/ ./
41+
COPY --from=extract build/target/extracted/spring-boot-loader/ ./
42+
COPY --from=extract build/target/extracted/snapshot-dependencies/ ./
43+
COPY --from=extract build/target/extracted/application/ ./
44+
45+
EXPOSE 80
46+
47+
ENTRYPOINT [ "java", "org.springframework.boot.loader.launch.JarLauncher" ]
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
FROM quay.io/keycloak/keycloak:26.3 AS builder
2+
3+
WORKDIR /opt/keycloak
4+
RUN /opt/keycloak/bin/kc.sh build
5+
6+
FROM quay.io/keycloak/keycloak:26.3
7+
8+
COPY --from=builder /opt/keycloak/ /opt/keycloak/
9+
10+
ENTRYPOINT ["/opt/keycloak/bin/kc.sh", "start"]
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
2+
services:
3+
4+
app:
5+
container_name: app
6+
build:
7+
context: .
8+
dockerfile: Dockerfile
9+
environment:
10+
SERVER_PORT: 80
11+
SPRING_PROFILES_ACTIVE: "default"
12+
ports:
13+
- "80:80"
14+
depends_on:
15+
- keycloak
16+
17+
keycloak:
18+
container_name: keycloak
19+
build:
20+
context: .
21+
dockerfile: Dockerfile.keycloak
22+
ports:
23+
- "8080:8080"
24+
environment:
25+
KC_DB: dev-file
26+
KC_HTTP_ENABLED: "true"
27+
KC_HTTP_PORT: "8080"
28+
KC_HOSTNAME: localhost
29+
KC_HEALTH_ENABLED: "true"
30+
KC_METRICS_ENABLED: "true"
31+
KEYCLOAK_ADMIN: admin #⚠️ DO NOT USE IN PRODUCTION
32+
KEYCLOAK_ADMIN_PASSWORD: admin #⚠️ DO NOT USE IN PRODUCTION
33+
KC_HTTPS_CERTIFICATE_FILE: /opt/keycloak/certs/tls.crt
34+
KC_HTTPS_CERTIFICATE_KEY_FILE: /opt/keycloak/certs/tls.key
35+
volumes:
36+
- ./docker/keycloak:/opt/keycloak/certs
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
TLS Certificates for Keycloak
2+
These certificates were manually generated using the following command:
3+
4+
```bash
5+
openssl req -x509 -newkey rsa:4096 -keyout tls.key -out tls.crt -days 365 -nodes \
6+
-subj "/CN=localhost"
7+
```
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIFCTCCAvGgAwIBAgIUIyugoLVFZznlfIT1+VwNY7TKaH0wDQYJKoZIhvcNAQEL
3+
BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI1MDgwMjAwNDYzM1oXDTI2MDgw
4+
MjAwNDYzM1owFDESMBAGA1UEAwwJbG9jYWxob3N0MIICIjANBgkqhkiG9w0BAQEF
5+
AAOCAg8AMIICCgKCAgEA59ml/0oqbcJ1JnLoPCKtkma7mSow0hFLZDE26N52R+4K
6+
Xw3trgNW2JL2Z3xQTMnRwHdMwKduTjQQob69bP0K7x4F6nNsrix4u88pOio8r+D6
7+
cJX3eRnfDqDclGCUy76qqpe5WUnQBsOKVfV2dvAKLb1aNttw8E2hM0/RGW1m9mKH
8+
KJlvjS/4qTH8tmm5AI7eEJZfHYsONAzw/xsKhFkPwX2FkGn+/efqmJ7ufHMsD5tD
9+
zN9fjvt9iYhhWKuJA2pFwol+NDz+25w8ksyxnH8HKREqSkpg3l2owuwrBRG+F3vh
10+
IAFxJaC0CGvUY3suqIAUCYcaPxecxjWS08ySZuojh27s3/9dufDx1CSXCX1+iS+U
11+
lYOEI7SaLq6KIbo8BfrkqDNrUI6wJxLOYrokv1s2XSg4gEeCXh8VcjK2rbUs8QAI
12+
6lakr1hAuvCq6PqEsRcioMzUBLeb3r0klfr3sGW3S/PtidvvtBRDnQ07pysvntGq
13+
FQXd9BFS0+36B2SmbZPdx6nvS1EXwXwHCxzhsMMcRgP9W9rZekLfAhqKVqrRfLWN
14+
r4Oq9TCeYGrcUB8unvKP2irVMoKnUD+PyUErzg/ZLLCnjEleNp83QuAYPTTpe0xE
15+
Os+KCkuw4Mb5s4BbWGm7jeOAvGrjLLMzdaDRYaMp4mCL5wfbGTVxodk9LqP4D8cC
16+
AwEAAaNTMFEwHQYDVR0OBBYEFO/90I29W64gE7TsZLYRQm/AafCoMB8GA1UdIwQY
17+
MBaAFO/90I29W64gE7TsZLYRQm/AafCoMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
18+
hvcNAQELBQADggIBAL9SLQ+Get1P7WMv4EAaxaktKgAvNpoSu8C57Cp0Gm07wkYP
19+
wx+iQ65NsZZgqXDkzHdsV1Qp4ETNFrd/zhgYx0LEVCVDkHGcxFeadDm5biSm942b
20+
7l4hBXQbDP83FyedVyUimRsyC1xacBZUmFN6E2w1H+fDsWSFP4PbawXo6AldWZkh
21+
pM5CC36cyXeTUb2qhLnX0qJy29O2ixmNlSGDR0cH6cyK0Qorh7NiS3c4M5l7FRTC
22+
dwcQxKY1pTQ8KLTTeDNBqXwegl2UbH4SPMIBUnpYUcRaHiFOGKa0CZLe4nr/Jjaj
23+
rNcRq7ddeastfYEzBn9oympmkTuKkNYBjiGYYPBYFy9XpxjqCxC++YmR1rzdt91w
24+
RJ3pPopRm0RHx4lX9o9sqNn9xYb0wCJRq4A5Tez7Q0lUY8uAQGQdLFnikIS/GSAT
25+
avSR4O3pgyj9Ua0BxXKOkXmLDpMurF5a9LB1eyoFV8H80Uj4lqmrYpgA6BUyy6By
26+
G85ca6K9UZczGUHFtttqMZrSqOqBJxkipfktlcqNBqUqNvgk1JjsWysjL2fcQ7Xq
27+
fXIdSd5OWf2Gq6pPFCWo4Qff7Bx8kfTNsaYcEuA0dsJysjYv9uQ3T4FmRSJuDNAZ
28+
ceq3T5dzNHSP0cp9fb7WxZCfMsQuZUyYJy/O6g3xIrykPS076Mgn+KLVoKJ9
29+
-----END CERTIFICATE-----
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDn2aX/SiptwnUm
3+
cug8Iq2SZruZKjDSEUtkMTbo3nZH7gpfDe2uA1bYkvZnfFBMydHAd0zAp25ONBCh
4+
vr1s/QrvHgXqc2yuLHi7zyk6Kjyv4Ppwlfd5Gd8OoNyUYJTLvqqql7lZSdAGw4pV
5+
9XZ28AotvVo223DwTaEzT9EZbWb2YocomW+NL/ipMfy2abkAjt4Qll8diw40DPD/
6+
GwqEWQ/BfYWQaf795+qYnu58cywPm0PM31+O+32JiGFYq4kDakXCiX40PP7bnDyS
7+
zLGcfwcpESpKSmDeXajC7CsFEb4Xe+EgAXEloLQIa9Rjey6ogBQJhxo/F5zGNZLT
8+
zJJm6iOHbuzf/1258PHUJJcJfX6JL5SVg4QjtJouroohujwF+uSoM2tQjrAnEs5i
9+
uiS/WzZdKDiAR4JeHxVyMrattSzxAAjqVqSvWEC68Kro+oSxFyKgzNQEt5vevSSV
10+
+vewZbdL8+2J2++0FEOdDTunKy+e0aoVBd30EVLT7foHZKZtk93Hqe9LURfBfAcL
11+
HOGwwxxGA/1b2tl6Qt8CGopWqtF8tY2vg6r1MJ5gatxQHy6e8o/aKtUygqdQP4/J
12+
QSvOD9kssKeMSV42nzdC4Bg9NOl7TEQ6z4oKS7DgxvmzgFtYabuN44C8auMsszN1
13+
oNFhoyniYIvnB9sZNXGh2T0uo/gPxwIDAQABAoICAC+LCyYpkD/Hs3w57fN+7Pbr
14+
iCalZzN8hmg6S1c/XyPq5UeOtKGNX76zjEG2VUUZ0aBVFnEfJFh3Br4UPgXeceKM
15+
1ou4NZ4V0oA4v+yEgsNSMCjsJ742lu4KAJGQqJKLO7YVvNVZdIYejPyJhExpdrzg
16+
amJ7Z1JvqNG72VYMgCOgGrUxmZVrM+OGM5s4XM6HfXQLUd/eBwCXcsftRJ/VH4z+
17+
72eoxLhOWWYImUD94RgmL6YQXCkW2yxbwhKLwmHn5fw5c57Er0JbbHRx8y3zQoWi
18+
Vni7fde7fwLRqRS2CbQJHCYTBZ/Ar4pWikwIE45MDU/S24f6kJR4oe46sf7Wnogg
19+
PZTiZs0SNi1ivIsKRTS1k4ncdcXMxHImpPBiQ3oz0QqKgNxDpUgZ+nus3ztSp6B7
20+
hPcM9lcuaf3U0C0QvR5OykQ+AFm/iYKA9OuSSw7LnPExl0LyflBhXwbui/0AhWoY
21+
BOkb+HmRxT3HvkKWpHjbm69eEsTbtP6EWsEEEa5TvTmTL5YeQCgCzFVJ2lrl++Sr
22+
Ra69ERSm1uL3fivh5MDVyNiD6pI/ZxRAw3F7GoxQTsNrj64XCndaseMKINJYuYlJ
23+
cSnt9zo3tBYxJR3TwPK+qrtrHTCYVX2B0AtbY5y/ODcsSfHgFjy+R5tG7S27UJFC
24+
Lnhv5OKn8IM1XXQoEtZBAoIBAQD5o+Bgccmd3XHx26bkQekuiGME/T0vSYNjneTy
25+
BqPK6UwSfgrWyvrjuTuhaFSGHuTSzf0mgIopOddTZxcMm8fZvRdzXh+wM/cpmFwo
26+
rQXxNrw1DhxIni3DBRXW/yhVA2GmOmOuW27zrkMcj57SlUv1KH8j6S25XWASnZ4n
27+
Vopsz/8/DqqCnN9QDNLxrQjHp8BMot66MRFCAhifzTnNO5EkrTPj5OFyTifhaaA1
28+
AL/MRP2fVs55tU6yU/R0eRp07XYghhao3qybk+cssi/nVmo6d1r5pQQZM5EVTPhz
29+
t/0WR9JCFfMUOXvThIFQEP+UU98ToJM9MffsZHtUPS5i/WehAoIBAQDtwb97phiT
30+
LMYmbXqVuiO2mWsghuVA1ELr2OvR3nkUKmd4snjuerZcVP4dicMgeDyOFBNtQMNk
31+
dAfbBlQGzJLkfWhmCTV/3tsVsuUR35J8Y9kw/q7QnMDQEvXkBlTjy9khz4x+IF2L
32+
INZBImWhjzpEfArsrZvfzN+0tJAfOGlOkfBpot2JuhBseI0MOD38qMLq6ZqeyPOH
33+
jGU72u+31l5E27cGBv48z9FezZDCWNt+spHUEZH8jYiut6LQjHErtvdUhIbEw7su
34+
W/vD8kW/b1I5fUkt/B3/oH92l9mFAnJqp47RTd3uD/zLGpIgZXfvlwG+RCQkn4TR
35+
5XzQYit3Tp5nAoIBACqvcMBM9JJ/uOoICuNgucRxIa1Kt9mMEmFIMEuKAxvBBHbt
36+
AmFz1650j9OriThds/avrieVNwqRj1X9fJ11TZjXkljxsS1p1UtReACkhS2XlFrm
37+
DMQF+AEur2tRuc2/hETuGvlHPROBqowJqriLOq+yuvqi9mSJqNHGDbLgQ08Tyas4
38+
kMNAm5aOestEMQoijukLuFXR6geFYDyC1O1Y0BqbWxIOotXuszcB3pjxhdohudQy
39+
/Z8l90zauiPoSTPRHq+0/c7mNFFt2stztGk0B3nzyqSBKNA+VwJzZNA0l5vlr/gI
40+
1MWShq/GKm5MWcc9CBnNDSAbmS7ch5IB3BqlBcECggEBANbGSPWny1dYAP/BshUD
41+
ezN+T7moYfw4QuPOpuiE8hd3XtU3U+sKSyYJWSzRv8TbGMi39fyhnmBmOJpwkwM5
42+
VhC2ANL7yqpiZMKrQibtMeTQRejuiHjGwZ61Ig8EcTb+dH0Igj+FeTsvRJy+N9TE
43+
D7zB2RSIl+CJsCQLYI3zZZ2mU+j5SOsbe66hD7lULRrKUJnowNZjbSqrdt+lHRuS
44+
uMG3QRReyNeiW94qEHSf1FgVc4qA/MGKEUjTdm6yD6GPvMlKlnu03Kg6S6psdvlB
45+
1KM+PBcgQvEiyUIWVlbDKRyTlH4auzpMku3eaNZ/EuMKJHb+EzBKMa9ygVe09tLl
46+
4E0CggEBAKCluHMtKRJjJaKTjd9PBwpOZP6vFcg/3WW7IE33DQn4oHrkU1MpCpo3
47+
824N8czjtoNkCFaWSadnKYWDC0bBGOjYvtRGIcN6nc/KlTjRI3rXi/fcDRSkvCNY
48+
Vgtdj+PYN6esE8C/VneAJLC10qN4VVYNlR3IWRlwoBt4SPXWaNRS+GLrmcg4AzHK
49+
qqu/whehbiVqet99Qb25cZZSJ6RVOKJb5d/JCWcFL+Sk4FqFRj8MErKP9tzT4JDV
50+
dRxtmN+SdcbTgzl4bXwPWrKoLMnxCBctZmc4DyJ8ox7kwmk0THHUo3bWJpiiOLBx
51+
utRIzWgC4BNP6uYA4TSUi3a+Amq5C0U=
52+
-----END PRIVATE KEY-----
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
2+
,---. ,--. ,--. ,--. ,--. ,--.
3+
' .-' ,---. ,--.--.`--',--,--, ,---. ,-----.| .' / ,---. ,--. ,--.,---.| | ,---. ,--,--.| |,-.
4+
`. `-. | .-. || .--',--.| \| .-. |'-----'| . ' | .-. : \ ' /| .--'| || .-. |' ,-. || /
5+
.-' || '-' '| | | || || |' '-' ' | |\ \\ --. \ ' \ `--.| |' '-' '\ '-' || \ \
6+
`-----' | |-' `--' `--'`--''--'.`- / `--' '--' `----'.-' / `---'`--' `---' `--`--'`--'`--'
7+
`--' `---' `---'
8+
9+
SPRING-KEYCLOAK-EXAMPLE

0 commit comments

Comments
 (0)