Top.Mail.Ru

Эффективное управление доступом: установка Keycloak с применением Docker-compose

В этой серии статей мы шаг за шагом рассматриваем полный путь работы с Keycloak — от установки и создания администратора до настройки realm, добавления клиентов и управления пользователями.

Настало время переходить к практике!

Для удобного и быстрого развертывания Keycloak в практике чаще всего используют Docker и Docker-compose. Это позволяет запускать как тестовые инстансы для разработки, так и более приближенные к боевым конфигурации, не внося изменений в саму систему.

Варианты конфигураций

В зависимости от задач можно использовать разные варианты docker-compose файлов. Рассмотрим несколько вариантов.

Компания Software Cats уже более пяти лет занимается аутстафом и аутсорсом по направлениям

Если у вас есть ИТ-проблема, оставьте ваши контакты, и мы поможем составить план ее решения.

Конфигурация с БД H2

Этот вариант подходит для локальной разработки и тестирования. Здесь используется встроенная база данных H2, которая не требует дополнительной настройки. Такой подход удобен, когда нужно быстро поднять Keycloak и проверить базовые сценарии работы.
services:
  keycloak:
    image: keycloak/keycloak:26.3.2
    container_name: keycloak
    environment:
      KC_BOOTSTRAP_ADMIN_USERNAME: temporary-admin
      KC_BOOTSTRAP_ADMIN_PASSWORD: password
    ports:
      - "8155:8080"
    command:
      - start-dev

Конфигурация с внешней БД PostgreSQL

Для более устойчивой работы на стадии разработки можно использовать уже внешнюю базу данных. В этом примере Keycloak подключается к PostgreSQL, установленной отдельно. Такой вариант позволяет хранить данные дольше и гибче настраивать базу.
services:
  keycloak:
    image: keycloak/keycloak:26.3.2
    container_name: keycloak
    environment:
      KC_DB: postgres
      KC_DB_DRIVER: org.postgresql.Driver
      KC_DB_USERNAME: postgres
      KC_DB_PASSWORD: postgres
      KC_DB_SCHEMA: public
      KC_DB_URL: jdbc:postgresql://localhost:5432/keycloak
      KC_BOOTSTRAP_ADMIN_USERNAME: temporary-admin
      KC_BOOTSTRAP_ADMIN_PASSWORD: password
    ports:
      - "8155:8080"
    command:
      - start-dev

Конфигурация с БД PostgreSQL

Этот вариант подразумевает запуск не только Keycloak, но и PostgreSQL в составе одного docker-compose файла. В итоге у нас получается полностью изолированная среда, которая не требует наличия отдельно установленной базы данных. Keycloak поднимается вместе с контейнером PostgreSQL и сразу готов к работе.
services:

  postgres:
    container_name: postgres
    image: postgres:17.4
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: keycloak
    ports: 
      - "5432:5432"
    restart: unless-stopped

  keycloak:
    image: keycloak/keycloak:26.3.2
    container_name: keycloak
    environment:
      KC_DB: postgres
      KC_DB_DRIVER: org.postgresql.Driver
      KC_DB_USERNAME: postgres
      KC_DB_PASSWORD: postgres
      KC_DB_SCHEMA: public
      KC_DB_URL: jdbc:postgresql://postgres:5432/keycloak
      KC_BOOTSTRAP_ADMIN_USERNAME: temporary-admin
      KC_BOOTSTRAP_ADMIN_PASSWORD: password
    ports:
      - "8155:8080"
    depends_on:  
      - postgres
    command:
      - start-dev

Основные настройки контейнеров Keycloak

В каждой из конфигураций используется официальный образ Keycloak. Рекомендуется указывать конкретную версию docker-образа Keycloak, вместо keycloak:latest, чтобы избежать непредсказуемого поведения при обновлениях.

Запуск происходит в режиме разработки с помощью команды start-dev, где по умолчанию используется http, кэш настроен на локальное использование, кэширование тем и шаблонов отключено, строгое разрешение имен хостов отключено.

Переменные окружения: что и за что отвечает

Переменные окружения позволяют задать базовые параметры.

Например:

KC_BOOTSTRAP_ADMIN_USERNAME и KC_BOOTSTRAP_ADMIN_PASSWORD отвечают за создание временной учетной записи администратора. Через неё можно войти в интерфейс Keycloak и создать полноценную учетную запись администратора. После этого временного администратора обычно удаляют, хотя в конфигурации параметры можно оставить - Keycloak не пересоздает пользователя заново.

Запуск Keycloak через Docker Compose

После выбора подходящей конфигурации, сервисы запускаются стандартной командой:
  • docker-compose up -d docker-compose up -d - подойдет для первой и второй конфигурации;
  • docker-compose -p "keycloak-stack" up -d - подойдет для третей конфигурации, чтобы задать наименование стека сервисов.
  • Можно к обоим вариантам добавить параметр -f name_file.yaml, чтобы указать конкретный файл для запуска, если у вас их несколько в директории. Прописать его до команды up -d.

Мы рассмотрели разные способы развернуть Keycloak с помощью Docker Compose — от простого тестового варианта с H2 до полноценной конфигурации с PostgreSQL. Такой подход позволяет гибко выбрать нужный сценарий для разработки и тестирования, а также упростить управление окружением.

В следующей статье мы разберём, как создать администратора в Keycloak, чтобы перейти от установки к полноценному управлению доступом.
Наша команда уже более пяти лет занимается реализацией проектов на Java и усилением команд по направлениям

За время существования компании, мы принимали участие в работе над более чем 100 проектами различного объема и длительности.

Если перед вами стоят вызовы, при которых вам может пригодится наша экспертиза, просто напишите нам,

Мы договоримся с вами об онлайн-встрече, чтобы подробнее обсудить ваш проект и вашу проблему.
Кирилл Буханцов
Java developer

Еще почитать по теме:

    Обсудить проект _
    Если у вас есть ИТ-проблема , оставьте свои контакты, и мы поможем правительству спланировать ее решение . Обещаем не рассылать спам.
    hello@softwarecats.dev
    Новосибирск, ул. Демакова
    23/5, оф.308
    Контакты _

    Выполненные проекты: