Keycloak 20.x Docker映像未启动(停靠合成)

wf82jlnq  于 2023-01-01  发布在  Docker
关注(0)|答案(1)|浏览(208)

我正在使用docker swarm并设置一个新的keycloak 20的副本,遇到了一些问题。我一直在使用旧版本的Keycloak,但似乎启动配置等已经改变,特别是对docker。
我的docker-compose.yml看起来像这个当前ly:

keycloak:
  image: quay.io/keycloak/keycloak:20.0
  environment:
    TZ: '...'
    KC_HOSTNAME: localhost
    KC_HOSTNAME_PORT: 80
    KC_HOSTNAME_STRICT_BACKCHANNEL: "true"
    KC_DB: mysql
    KC_DB_URL: jdbc:mysql://mysql:3306/keycloak
    KC_DB_USERNAME: ${KEYCLOAK_DB_USER}
    KC_DB_PASSWORD: ${KEYCLOAK_DB_PASSWORD}
    KEYCLOAK_ADMIN: admin
    KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_PASSWORD}
    KC_HEALTH_ENABLED: "true"
    KC_LOG_LEVEL: info
  volumes:
    - ./keycloak_realms:/realm-config # <- Unclear???
  depends_on:
    - mysql-db
  networks:
    - mysql-net
    - web
  healthcheck:
    test: [ "CMD", "curl", "-f", "http://localhost:8080/health/ready" ]
    interval: 15s
    timeout: 2s
    retries: 15
  deploy:
    resources:
      limits:
        cpus: '0.50'
        memory: 512m

当我启动容器时,看到的只是kc.sh shell脚本的文档。
我也找不到有关新卷位置等的文档。
总的来说,我有一个缺乏文档和如何调试的问题。
有没有人更多的信息配置和如何有什么错在这里?

dxxyhpgq

dxxyhpgq1#

您的配置基本上是正确的,但需要为kc.sh命令提供一个参数。如帮助输出所示,您的选项有:

build                   Creates a new and optimized server image.
start                   Start the server.
start-dev               Start the server in development mode.
export                  Export data from realms to a file or directory.
import                  Import data from a directory or a file.
show-config             Print out the current configuration.
tools                   Utilities for use and interaction with the server.

您可能需要start-dev,因此:

services:
  keycloak:
    image: quay.io/keycloak/keycloak:20.0
    command: start-dev
    .
    .
    .

使用KC_DB: mysql时我无法运行程序(这导致了Unknown database: MySQL错误),但使用MariaDB运行良好。

services:
  mysql:
    image: docker.io/mariadb:10
    environment:
      MARIADB_DATABASE: ${KEYCLOAK_DB_NAME}
      MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD}
      MARIADB_PASSWORD: ${KEYCLOAK_DB_PASSWORD}
      MARIADB_USER: ${KEYCLOAK_DB_USER}

  keycloak:
    image: quay.io/keycloak/keycloak:20.0
    environment:
      KC_HOSTNAME: localhost
      KC_HOSTNAME_PORT: 8080
      KC_HOSTNAME_STRICT_BACKCHANNEL: "true"
      KC_DB: mariadb
      KC_DB_URL: jdbc:mariadb://mysql:3306/${KEYCLOAK_DB_NAME}?characterEncoding=UTF-8
      KC_DB_USERNAME: ${KEYCLOAK_DB_USER}
      KC_DB_PASSWORD: ${KEYCLOAK_DB_PASSWORD}
      KEYCLOAK_ADMIN: admin
      KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_PASSWORD}
      KC_HEALTH_ENABLED: "true"
      KC_LOG_LEVEL: info
    healthcheck:
      test: [ "CMD", "curl", "-f", "http://localhost:8080/health/ready" ]
      interval: 15s
      timeout: 2s
      retries: 15
    command: start-dev
    ports:
      - 8080:8080

有了这个配置,我就可以访问http://localhost:8080上的keycloak并登录到管理控制台。

相关问题