From 295ea9885e0799d7b62cdee0c1352d186dd0fd6e Mon Sep 17 00:00:00 2001
From: Elian Loraux <elian.loraux@tetras-libre.fr>
Date: Thu, 16 May 2024 09:25:33 +0200
Subject: [PATCH] add mariadb container for persistete database

---
 .env.sample.       |  4 +++-
 .gitignore         |  1 +
 README.md          |  2 +-
 docker-compose.yml | 35 +++++++++++++++++++++++++++++++----
 4 files changed, 36 insertions(+), 6 deletions(-)

diff --git a/.env.sample. b/.env.sample.
index 9f26b47..fa965de 100644
--- a/.env.sample.
+++ b/.env.sample.
@@ -5,6 +5,8 @@ HOST=keycloak.FQDN
 
 # KeyCloak
 KC_ADMIN=admin
-KC_ADMIN_PASSWD=admin
+KC_ADMIN_PASSWD=
+MARIADB_PASS=
+
 
 RESTART=always
diff --git a/.gitignore b/.gitignore
index 4c49bd7..5409b72 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
 .env
+keycloak_db/
diff --git a/README.md b/README.md
index d879dbe..d3acf6d 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@ This is dockerised keycloak system
 
 1. Clone this repository
 2. `cp .env.sample .env`
-3. Edit .env (host and admin credential)
+3. Edit .env (host, keycloak admin credential and MariaDB password)
 4. Run KeyCloak with docker-compose
 
 ## Secure the first application
diff --git a/docker-compose.yml b/docker-compose.yml
index cd6223b..e9f217e 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -5,9 +5,36 @@ services:
         image : quay.io/keycloak/keycloak:24.0.3
         container_name: keycloak
         environment:
-            - KEYCLOAK_ADMIN=${KC_ADMIN}
-            - KEYCLOAK_ADMIN_PASSWORD=${KC_ADMIN_PASSWD}
+            KEYCLOAK_ADMIN: ${KC_ADMIN}
+            KEYCLOAK_ADMIN_PASSWORD: ${KC_ADMIN_PASSWD}
               # cf https://github.com/keycloak/keycloak/issues/11170 for below variable
-            - KC_HOSTNAME_URL=https://${HOST}
-            - KC_HOSTNAME_ADMIN_URL=https://${HOST}
+            KC_HOSTNAME_URL: https://${HOST}
+            KC_HOSTNAME_ADMIN_URL: https://${HOST}
+              # Database
+            KC_DB: mariadb
+            KC_DB_SCHEMA: keycloak
+            KC_DB_USERNAME: keycloak
+            KC_DB_PASSWORD: ${MARIADB_PASS}
+            KC_DB_URL_HOST: mariadb
+        restart: ${RESTART}
+
+
         command: ["start-dev", "--import-realm", "--verbose"]
+        depends_on:
+            - mariadb
+        restart: ${RESTART}
+
+    mariadb:
+        image: mariadb:latest
+        container_name: mariadb
+        volumes:
+            - "./keycloak_db:/var/lib/mysql:rw"
+        environment:
+            MYSQL_ROOT_PASSWORD: ${MARIADB_PASS}
+            MYSQL_DATABASE: keycloak
+            MYSQL_USER: keycloak
+            MYSQL_PASSWORD: ${MARIADB_PASS}
+        restart: ${RESTART}
+
+volumes:
+    keycloak_db:
-- 
GitLab