정구리의 우주정복

[Docker] Docker 환경에 Keycloak 설치하기 (Docker compose 로 keycloak 설치) 본문

STUDY/RECORD

[Docker] Docker 환경에 Keycloak 설치하기 (Docker compose 로 keycloak 설치)

Jungry_ 2024. 4. 21. 20:32
반응형

Keycloak 설치해서 토이프로젝트의 사용자 인증, 권한 관리를 해버릴 예정이다 + Docker 공부도 해보려고 한다

Keycloak 공식 문서

Docker 환경에 keycloak 설치 하는 방법은 두가지가 있다 !

(1) docker run

(2) docker compose

위 링크에서는 docker run 을 사용하고 있지만 이번에는 docker compose 를 사용해서 설치해보려 한다

그냥 .. yaml 파일 작성하는거 해보고싶어서 한다 (공부할겸)

Docker Compose 란 ?


Docker Compose 는 여러개의 컨테이너로 구성된 복잡한 애플리케이션을 쉽게 관리하기 위한 도구이다 !
Docker run 을 사용하면 개별 container 생성이 가능한데 매번 n개의 container 를 생성하는 것은 관리하기 어렵고 일일히 실행하기 번거롭기 때문에
하나의 컨테이너 묶음으로 관리하기 위해 Docker compose 를 사용한다. yaml 파일에 옵션들을 정의해서 사용하면 된다 !

컨테이너의 수가 많아지고, 정의해야 할 옵션이 많아진다면 Docker compose 를 사용하자 !

Docker Compose 설치


Mac 기준으로 작성하도록 하겠음 !
설치 및 버전 확인

brew install cask docker-compose

docker-compose -v
Docker Compose version v2.22.0-desktop.2

Yaml 파일 작성


흠 ...

docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:24.0.3 start-dev

공식문서에 docker run 시 이렇게 하라고 했으니까 이걸 바탕으로 yml 파일을 만들어보겠다 ! (gpt 의 도움을 받음)

docker-compose.yml

version: '3.8'
services:
  keyclaok:
    image: quay.io/keycloak/keycloak:24.0.3
    ports:
      - "3000:8080"
    environment:
      - KEYCLOAK_ADMIN=admin
      - KEYCLOAK_ADMIN_PASSWORD=admin
    command: ["start-dev"]

Docker Compose 실행


해당 yml 파일이 있는 폴더로 이동해
docker-compose up
명령어를 사용해 실행해준다

jungry@jungry-MacBook-Pro toygry % docker-compose up
[+] Building 0.0s (0/0)                                                                                                                                                                                                         docker:desktop-linux
[+] Running 1/0
 ✔ Container toygry-keyclaok-1  Recreated                                                                                                                                                                                                       0.1s 
Attaching to toygry-keyclaok-1
toygry-keyclaok-1  | Updating the configuration and installing your custom providers, if any. Please wait.
toygry-keyclaok-1  | 2024-04-21 11:22:13,148 INFO  [io.qua.dep.QuarkusAugmentor] (main) Quarkus augmentation completed in 4245ms
toygry-keyclaok-1  | 2024-04-21 11:22:14,050 INFO  [org.keycloak.quarkus.runtime.hostname.DefaultHostnameProvider] (main) Hostname settings: Base URL: <unset>, Hostname: <request>, Strict HTTPS: false, Path: <request>, Strict BackChannel: false, Admin URL: <unset>, Admin: <request>, Port: -1, Proxied: false
toygry-keyclaok-1  | 2024-04-21 11:22:14,206 WARN  [org.infinispan.CONFIG] (keycloak-cache-init) ISPN000569: Unable to persist Infinispan internal caches as no global state enabled
toygry-keyclaok-1  | 2024-04-21 11:22:14,243 INFO  [org.infinispan.CONTAINER] (keycloak-cache-init) ISPN000556: Starting user marshaller 'org.infinispan.jboss.marshalling.core.JBossUserMarshaller'
toygry-keyclaok-1  | 2024-04-21 11:22:15,326 WARN  [io.quarkus.agroal.runtime.DataSources] (JPA Startup Thread) Datasource <default> enables XA but transaction recovery is not enabled. Please enable transaction recovery by setting quarkus.transaction-manager.enable-recovery=true, otherwise data may be lost if the application is terminated abruptly
toygry-keyclaok-1  | 2024-04-21 11:22:16,579 INFO  [org.keycloak.quarkus.runtime.storage.legacy.liquibase.QuarkusJpaUpdaterProvider] (main) Initializing database schema. Using changelog META-INF/jpa-changelog-master.xml
toygry-keyclaok-1  | 
toygry-keyclaok-1  | UPDATE SUMMARY
toygry-keyclaok-1  | Run:                        124
toygry-keyclaok-1  | Previously run:               0
toygry-keyclaok-1  | Filtered out:                 0
toygry-keyclaok-1  | -------------------------------
toygry-keyclaok-1  | Total change sets:          124
toygry-keyclaok-1  | 
toygry-keyclaok-1  | 2024-04-21 11:22:17,715 INFO  [org.keycloak.connections.infinispan.DefaultInfinispanConnectionProviderFactory] (main) Node name: node_289829, Site name: null
toygry-keyclaok-1  | 2024-04-21 11:22:17,770 INFO  [org.keycloak.broker.provider.AbstractIdentityProviderMapper] (main) Registering class org.keycloak.broker.provider.mappersync.ConfigSyncEventListener
toygry-keyclaok-1  | 2024-04-21 11:22:17,798 INFO  [org.keycloak.services] (main) KC-SERVICES0050: Initializing master realm
toygry-keyclaok-1  | 2024-04-21 11:22:18,618 INFO  [io.quarkus] (main) Keycloak 24.0.3 on JVM (powered by Quarkus 3.8.3) started in 5.313s. Listening on: http://0.0.0.0:8080
toygry-keyclaok-1  | 2024-04-21 11:22:18,619 INFO  [io.quarkus] (main) Profile dev activated. 
toygry-keyclaok-1  | 2024-04-21 11:22:18,619 INFO  [io.quarkus] (main) Installed features: [agroal, cdi, hibernate-orm, jdbc-h2, keycloak, logging-gelf, narayana-jta, reactive-routes, resteasy-reactive, resteasy-reactive-jackson, smallrye-context-propagation, vertx]
toygry-keyclaok-1  | 2024-04-21 11:22:19,003 INFO  [org.keycloak.services] (main) KC-SERVICES0009: Added user 'admin' to realm 'master'
toygry-keyclaok-1  | 2024-04-21 11:22:19,005 WARN  [org.keycloak.quarkus.runtime.KeycloakMain] (main) Running the server in development mode. DO NOT use this configuration in production.

Keycloak 정상 동작 확인


localhost:3000 으로 이동 (자신이 설정한 포트로 접속)

후 admin,admin 으로 로그인 (자신이 설정한 admin 정보로 접속)

성공적으로 설치 완료된 걸 확인할 수 있다 !!

반응형
Comments