📝

【実例】Keycloak(Quarkus distro)+PostgreSQLをDockerComposeで動かす【サンプルコード付き】

2023/02/08に公開

はじめに

Keycloak (Quarkus distro) + PostgreSQL を Docker Compose で立ち上げるサンプルコードです。

Dockerfile

FROM quay.io/keycloak/keycloak:18.0.2
USER root
RUN microdnf update -y && microdnf install -y glibc-langpack-en gzip hostname java-11-openjdk-headless openssl tar which && microdnf clean all
USER 1000
EXPOSE 8080

#テーマをコピー
#独自のテーマを作成した場合
#COPY ./themes/xxxx /opt/keycloak/themes/xxxx

docker-compose

version: '3'

volumes:
  postgres_data:
      driver: local

services:
  postgres:
    image: postgres:15.1
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: keycloak
      POSTGRES_USER: keycloak
      POSTGRES_PASSWORD: password
    ports:
      - 5432:5432
  pgadmin4:
    image: dpage/pgadmin4:latest
    container_name: pgadmin4
    ports:
      - 8000:80
    volumes:
      - ./docker/pgadmin4:/var/lib/pgadmin
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@example.com
      PGADMIN_DEFAULT_PASSWORD: password
    hostname: pgadmin4
    links:
      - postgres
    depends_on:
      - postgres
    #restart: always
  keycloak:
    container_name: keycloak
    build:
      context: .
      dockerfile: Dockerfile
    environment:
      # Keycloak 管理コンソール
      KEYCLOAK_ADMIN: admin
      KEYCLOAK_ADMIN_PASSWORD: password
      # データベース
      KC_DB: postgres
      KC_DB_PASSWORD: password
      KC_DB_USERNAME: keycloak
      KC_DB_URL_PORT: 5432
      KC_DB_URL_HOST: postgres
      KC_DB_URL_DATABASE: keycloak
      #KC_DB_URL: 'jdbc:postgresql://postgres:5432/keycloak'
      KC_DB: postgres
      KC_LOG_LEVEL: ERROR,org.infinispan:DEBUG,org.jgroups:DEBUG
      TZ: 'Asia/Tokyo' # タイムゾーン
      KC_HTTP_RELATIVE_PATH: '/auth' # 管理コンソールのパス。デフォルトでは「/」のため、v16 利用時と合わせたい場合に指定する
      KC_HEALTH_ENABLED: 'true' # ヘルスチェック URL の有効化
      KC_HTTP_ENABLED: 'true' # HTTP の待ち受け
      KC_HOSTNAME_STRICT: 'false'
      # see https://www.keycloak.org/server/hostname#_accessing_keycloak_in_production_mode_using_http
      KC_HOSTNAME_STRICT_HTTPS: 'false'
      # see https://www.keycloak.org/server/hostname#_backend_endpoints
      KC_HOSTNAME_STRICT_BACKCHANNEL: 'true'
      # see https://www.keycloak.org/server/reverseproxy
      KC_PROXY: 'edge'
      # see https://www.keycloak.org/server/features#_supported_features
      KC_FEATURES: 'token-exchange'
    command:
      - "start"
      - "--auto-build"
    ports:
      - 8080:8080
    links:
      - postgres
    depends_on:
      - postgres

起動

// イメージを元にコンテナを起動します。イメージがなければコンテナのイメージビルドから開始します。
docker-compose up

// イメージのビルドを行ってからコンテナを起動します。
docker-compose up --build


// バックグラウンドで実行したい場合は
docker-compose up -d --build

コンテナが起動したら、http://localhost:8080/auth/ にアクセスして確認します。

pgAdmin は、http://localhost:8000/ にアクセスして確認します。ログインは、PGADMIN_DEFAULT_EMAILPGADMIN_DEFAULT_PASSWORD に指定したものを使用します。

Discussion