- Red Hat에서 개발한 오픈소스 Identity and Access Management(IAM) 솔루션입니다. 현대적인 애플리케이션과 서비스를 위한 인증 및 권한 부여 기능을 제공하는 인증 서버(Authentication Server)입니다
- Keycloack에서는 여러 플랫폼에서 중앙 집중식 인증 서버로 동작을 합니다. - 주요한 기능은 서로 다른 도메인에서 실행되는 애플리케이션 간의 SSO를 지원하거나 REST API 기반에 접근제어 토큰에 대한 인증 제공 및 세션 타임아웃, 동시 로그인 제한과 같은 다양한 세션 기능을 담당합니다.
- 여러 컨테이너가 함께 실행되는 환경에서, 하나의 파일 내에 정의하여 여러 컨테이너를 관리하기 위한 도구를 의미합니다. 즉, 여러 컨테이너를 관리할 때, 단일 명령어를 통해 생성-관리-배포하는 기능을 수행하는 역할을 합니다.
- 기존의 Dockerfile을 통해 단일 컨테이너를 ‘생성-관리-배포’하는 과정에서의 처리과정은 간단하였으나 여러 컨테이너를 일괄 띄우는데 시간 소요가 많이 되기에 이를 사용합니다. - 이러한 컨테이너 관리는 YAML 파일 형식을 사용하여 서비스, 네트워크 및 볼륨 같은 애플리케이션 서비스를 구성할 수 있습니다. 또한 개발, 테스트, 스테이징, 운영 및 CI 워크플로우 환경에서 애플리케이션을 이동하여 배포가 가능하기에 관리가 매우 편리합니다.
https://docs.docker.com/compose/
1. Docker Compose 처리 과정
💡 Docker Compose 처리 과정
1. Dockerfile에 필요한 모든 서비스를 정의합니다.(Define all your required services in a Dockerfile) - Dockerfile 내에 각 다운로드 할 이미지와 실행 할 컨테이너에 대해 정의합니다.
2. Compose 파일(YAML/YML) 내에 각 서비스 간의 관계를 정의합니다.(Define the releationship between each service in a Compose file) - 이 파일에는 실행할 서비스(컨테이너)들과 그 설정들을 포함하고 있습니다. 사용할 파일 내용은 Docker 이미지, 포트 매핑, 볼륨 마운트, 네트워크 설정, 환경 변수 등이 정의됩니다.
3. Docker Compose를 사용하여 애플리케이션을 시작합니다.(Use Docker Compose to start the application) - Docker Compose의 실행 명령어 ‘docker-compose up’ 명령어를 수행하여 일괄 서비스를 실행합니다. - 이 명령어를 통해서 Docker Compose 파일에 정의된 모든 서비스를 시작합니다. - 필요한 Docker 이미지가 로컬에 없으면 자동으로 다운로드하고, 컨테이너를 생성하고 시작합니다.
4. Docker Compose의 서비스 상태를 확인합니다. - Docker Compose의 상태 확인 명령어 ‘docker-compose ps’ 명령어를 수행하여 서비스의 상태를 확인합니다. 현재 실행 중인 서비스의 상태를 확인할 수 있습니다.
+ 필요에 따라 Docker Compose의 서비스를 중지합니다. - Docker Compose의 중지 명령어 ‘docker-compose stop’ 명령어를 수행하거나 ‘docker-compose down’ 명령어를 수행하여 모든 서비스를 중지하고 컨테이너, 네트워크, 볼륨을 삭제합니다.
4) Docker 환경 구축 : 간단 구축 (DB 연결 없이)
💡 Docker 환경 구축 : 간단 구축 (DB 연결 없이)
- 데이터베이스 연결 없이 기본적인 KeyCloack 서버를 실행하는 방법을 구성해봅니다. - 해당 경우에는 개발 모드(start-dev)로 실행되며, 개발 환경에 적합한 간단한 구성이 됩니다. - ‘인메모리’ 내에 데이터가 저장이 되는 구조입니다. (* 컨테이너 재 실행 시 해당 값은 초기화됩니다.)
# 프로젝트 접근
$ cd simple-docker-compose-keycloak
# docker 컨테이너 이미지 생성 & 컨테이너 실행
$ docker compose up -d
# docker compose 상태 확인
$ docker compose ps
# [필요시] 1. 실행 중인 컨테이너, 네트워크, 볼륨 모두 제거
$ docker compose down -v
# [필요시] 2. 이미지 제거 (선택사항)
$ docker rmi simple-keycloak postgres:16-alpine3.21
$ docker rmi simple-docker-compose-keycloak-keycloak:latest
# [필요시] 3. Docker Compose 다시 실행
$ docker compose up -d
💡 [참고] PostgreSQL 기반으로 로컬 데이터베이스 구성이 필요하시면 아래의 글을 참고하시면 도움이 됩니다.