Sam*_*Sam 2 docker keycloak docker-compose
我正在使用 docker swarm 并设置 keycloak 20 的新副本,但遇到了一些问题。我一直在使用旧版本的 Keycloak,但似乎启动配置等已经改变,特别是对于 docker。
我的 docker-compose.yml 目前看起来像这样:
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
Run Code Online (Sandbox Code Playgroud)
当我启动容器时,我看到的只是kc.shshell 脚本的文档。
我也找不到有关新卷位置等的文档。
总的来说,我遇到了缺乏文档和如何调试的问题。
有谁有关于配置的更多信息以及这里出了什么问题吗?
lar*_*sks 14
您的配置基本上是正确的,但您需要为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.
Run Code Online (Sandbox Code Playgroud)
你可能想要start-dev,所以:
services:
keycloak:
image: quay.io/keycloak/keycloak:20.0
command: start-dev
.
.
.
Run Code Online (Sandbox Code Playgroud)
我无法让事情运行KC_DB: mysql(这导致了错误Unknown database: MySQL),但使用 MariaDB 工作正常。以下配置成功启动Keycloak:
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
Run Code Online (Sandbox Code Playgroud)
通过该配置,我可以通过 http://localhost:8080 访问 keycloak 并登录管理控制台。
仅供参考:在 Keycloak 21 中使用了新的微基础映像,因此“curl”不再包含在映像中,因此健康检查将不再起作用。
如果 Keycloak 配置没有 HTTPS,我的解决方法是这样的:
#!/bin/bash
exec 3<>/dev/tcp/localhost/8080
echo -e "GET /auth/health/ready HTTP/1.1\nhost: localhost:8080\n" >&3
timeout --preserve-status 1 cat <&3 | grep -m 1 status | grep -m 1 UP
ERROR=$?
exec 3<&-
exec 3>&-
exit $ERROR
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7245 次 |
| 最近记录: |