Capstone-F5
Docker에서 Keycloak 실행 및 오류 발생 원인
신입 개발자 박상우의 개발자 도전기
2025. 6. 20. 03:20
Keycloak을 Docker에서 실행하는 방법과 HTTP 오류 대처법
Keycloak은 인증 및 권한 관리를 위한 오픈소스 솔루션입니다. 이 글에서는 Keycloak을 Docker 환경에서 손쉽게 실행하는 방법과 실행 중 발생할 수 있는 HTTP 오류 대처 방법에 대해 상세히 설명합니다.
1. Docker로 Keycloak 실행하기
1-1. 기본 실행 방법
docker run -d \
--name keycloak \
-p 8080:8080 \
-e KEYCLOAK_ADMIN=admin \
-e KEYCLOAK_ADMIN_PASSWORD=admin123 \
quay.io/keycloak/keycloak:24.0.2 \
start-dev
KEYCLOAK_ADMIN
: Keycloak 관리자 계정 IDKEYCLOAK_ADMIN_PASSWORD
: 관리자 비밀번호start-dev
: 개발 모드로 실행 (DB 설정 없이 내부 H2 사용)
1-2. 외부 DB(PostgreSQL) 연동
외부 DB에 연결하면 영속적인 사용자 데이터 저장이 가능합니다.
docker run -d \
--name keycloak \
-p 8080:8080 \
-e KC_DB=postgres \
-e KC_DB_URL=jdbc:postgresql://:5432/keycloak \
-e KC_DB_USERNAME=keycloak \
-e KC_DB_PASSWORD=password \
-e KEYCLOAK_ADMIN=admin \
-e KEYCLOAK_ADMIN_PASSWORD=admin123 \
quay.io/keycloak/keycloak:24.0.2 \
start-dev
※ PostgreSQL 컨테이너와 함께 docker-compose로 실행하는 것이 일반적입니다.
2. Docker Compose로 실행
version: '3.8'
services:
postgres:
image: postgres:14
container_name: keycloak-db
environment:
POSTGRES_DB: keycloak
POSTGRES_USER: keycloak
POSTGRES_PASSWORD: password
ports:
- "5432:5432"
keycloak:
image: quay.io/keycloak/keycloak:24.0.2
container_name: keycloak
environment:
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin123
KC_DB: postgres
KC_DB_URL: jdbc:postgresql://postgres:5432/keycloak
KC_DB_USERNAME: keycloak
KC_DB_PASSWORD: password
ports:
- "8080:8080"
depends_on:
- postgres
command: start-dev
명령어: docker-compose up -d
3. HTTP 오류 대처 방법
3-1. 401 Unauthorized
- Access Token이 누락되었거나 잘못됨
- client 설정에서
Access Type
이 public/private로 올바르게 설정되었는지 확인 - Keycloak에 사용자 인증 정보가 정확히 등록되었는지 확인
3-2. 403 Forbidden
- 권한 부족 또는 Role 설정 미비
- Realm Role, Client Role이 잘 등록되었는지 확인
- Scope 설정 또는 token에 role이 포함되었는지 확인
3-3. 404 Not Found
- 잘못된 API endpoint 또는 client 설정 오류
- 경로가 정확한지, Keycloak에서 해당 endpoint가 활성화되었는지 확인