KeyCloak Server Docker 배포에 대해 정리했다.
* 배포 시, PostgreSQL DB 연동 내용을 포함한다.
보기 전 주의 사항
Docker-compose / DockerHub / Helm 등 배포에 여러 방법이 존재하며,
KeyCloak HA, KeyCloak HA + PostgreSQL 등 여러 파일이 존재했다.
해당 포스팅에서는 DockerHub 에서 jboss/KeyCloak:11.0.0 이미지를 가져와서 사용했다.
단, DB를 Docker에 이미지 올려서 사용한다면, 다른 방법을 사용하는게 좋다.
* 해당 내용은 DB image 가 아닌 Centos 에 설치해놓은 DB를 이용하기 때문에 다른 경우라면 이것을 안봐도 된다.
찾아보니까 KeyCloak 서버 Docker 배포 시, 외부 DB까지 Docker 배포가 가능한 형태의 yml 파일이 있었다.
그런 방법을 찾아서 보면 된다.
0. 환경
- VMware + Centos 7
- PostgreSQL 11 ( Centos 자체에 설치해놓음 )
1. Docker Pull
- DockerHub 에서 KeyCloak 서버를 가져온다.
$ docker pull jboss/kecloak:11.0.0
2. Dockerfile 작성
제공하는 파라미터로 외부 DB 설정을 하려고 했으나, 잘 동작하지 않아서 직접 파일(standalone-ha.xml)을 수정했다.
FROM jboss/keycloak:11.0.0
COPY ./module.xml /opt/jboss/keycloak/modules/system/layers/keycloak/org/postgresql/main/module.xml
COPY ./postgresql-42.2.18.jar /opt/jboss/keycloak/modules/system/layers/keycloak/org/postgresql/main/postgresql-42.2.18.jar
COPY ./standalone-ha.xml /opt/jboss/keycloak/standalone/configuration/standalone-ha.xml
jboss/keycloak 실행 시, standalone-ha.xml 이 디폴트로 동작했다.
따라서, 해당 파일의 DB 설정 부분을 바꾸고 실행했다.
- 참고 문서
KeyCloak 외부 DB 연결 (PostgreSQL)
KeyCloak 서버는 기본적으로 Java 기반의 H2 데이터베이스로 기동된다. => H2가 아닌 PostgreSQL 로 기동하는 방법에 대해 정리한다. * 참고. 외부 DB 연결 후, 기동 시 KeyCloak 에서 제공해주는 테이블들이
alice-secreta.tistory.com
3. 빌드 & 이미지 생성
$ docker build . -t {본인의 dockerhub or registry}/keyclaok:11.0
4. 기동
- 원하는 포트에 원하는 계정 ID/PW 로 기동한다.
$ docker run -p 8180:8180 -e KEYCLOAK_USER={관리콘솔 계정 USER} -e KEYCLOAK_PASSWORD={관리콘솔 계정 PW} {본인의 dockerhub or registry}/keycloak-test:11.0 -Djboss.http.port=8180
# KeyCloak + Docker 배포 방법 중 하나의 방법이다.
'Cloud Computing > Docker' 카테고리의 다른 글
# Portainer docker-compose (0) | 2022.12.20 |
---|---|
# MySQL docker-compose (0) | 2022.12.20 |