Keycloak 和 postgres docker 组合

问题描述 投票:0回答:1

我构建了这个 compose 堆栈来运行 keycloak 并关联 postgres DB:

volumes:
  postgres_data:
    driver: local
services:
  postgres:
    image: postgres:14.1-alpine
    volumes:
      - path
    environment:
      POSTGRES_DB: test1
      POSTGRES_USER: ex
      POSTGRES_PASSWORD: ex
    ports:
      - '5433:5432'

  keycloak:
    image: quay.io/keycloak/keycloak
    volumes:
      - path
    environment:
      DB_VENDOR: POSTGRES
      DB_ADDR: postgres
      DB_DATABASE: test1
      DB_USER: ex
      DB_PASSWORD: ex
      DB_SCHEMA: public
      KEYCLOAK_USER: 'something'
      KEYCLOAK_PASSWORD: 'something'
    command:
      - start-dev
      - --import-realm
    ports:
      - "8080:8080"
    depends_on:
      - postgres

运行此堆栈:

docker compose up

注意:此处使用的值是示例

我试图查看数据库中的表,但没有找到任何表。 docker正在运行,没有任何错误日志...所以我有点迷失...

postgresql docker-compose
1个回答
0
投票

此演示将看到Keycloak的数据库表。

我正在使用

Keycloak
版本 23.0.7 和
postgres
版本 15.6

Windows 中的 git bash 终端

在 docker-compose.yml 中

version: '3.8'

services:
  postgres:
    image: postgres:15.6
    container_name: postgres_db
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: keycloak
      POSTGRES_USER: keycloak
      POSTGRES_PASSWORD: password

  keycloak_web:
    image: quay.io/keycloak/keycloak:23.0.7
    container_name: keycloak_web
    environment:
      KC_DB: postgres
      KC_DB_URL: jdbc:postgresql://postgres:5432/keycloak
      KC_DB_USERNAME: keycloak
      KC_DB_PASSWORD: password

      KC_HOSTNAME: localhost
      KC_HOSTNAME_STRICT: false
      KC_HOSTNAME_STRICT_HTTPS: false

      KC_LOG_LEVEL: info
      KC_METRICS_ENABLED: true
      KC_HEALTH_ENABLED: true
      KEYCLOAK_ADMIN: admin
      KEYCLOAK_ADMIN_PASSWORD: admin
    command: start-dev
    depends_on:
      - postgres
    ports:
      - 8180:8080

volumes:
  postgres_data:

启动它

docker compose up

步骤#1 检查容器

docker ps -a

CONTAINER ID   IMAGE                              COMMAND                  CREATED         STATUS         PORTS                              NAMES
ff2a5f7e4386   quay.io/keycloak/keycloak:23.0.7   "/opt/keycloak/bin/k…"   4 minutes ago   Up 4 minutes   8443/tcp, 0.0.0.0:8180->8080/tcp   keycloak_web
bcb8cf4e2f2e   postgres:15.6                      "docker-entrypoint.s…"   4 minutes ago   Up 4 minutes   5432/tcp                           postgres_db

打开浏览器

http://localhost:8180/admin/master/console/

步骤#2,进入
postgres
容器

winpty docker exec -it postgres_db bin/bash

(*注:我使用的是Windows git bash,Linux中不需要winpty)

步骤#3,检查Linux版本

cat /etc/os-release

输出

PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

我是谁

whoami

输出

root

步骤#4,添加用户 'keycloak
and add
sudo` 用户

adduser keycloak

(注意

password
是密码)

输出

步骤#5,切换用户
keycloak
并连接数据库

su keycloak
psql -U keycloak -w

输出

psql (15.6 (Debian 15.6-1.pgdg120+2))
Type "help" for help.

步骤#6,获取连接信息

 \conninfo

输出

步骤#7,列出表和模式

\dt

输出

步骤#8,客户名单和详细信息

SELECT name, client_id  FROM client;

输出

应该与UI的客户端相匹配

特定领域的用户数据

您需要检查领域ID

SELECT name, id FROM realm;

输出

然后按

realm_id
过滤
my-realm
的用户列表

SELECT username, email FROM  user_entity WHERE realm_id='c4e827a1-823a-4304-8905-5daa89563cbe';

输出

它将返回 UI 的用户列表

my-realm

© www.soinside.com 2019 - 2024. All rights reserved.