Keycloak镜像docker-compose.yml中command传bash命令报错:Unknown option: 'bash'
问题解决:Keycloak Docker启动报错"Unknown option: 'bash'"
错误原因
quay.io/keycloak/keycloak镜像的默认ENTRYPOINT是/opt/keycloak/bin/kc.sh,你在command中指定的bash -c ...会被当成kc.sh的命令参数,而bash并不是kc.sh的合法选项,因此触发错误。
解决方案
方案1:覆盖ENTRYPOINT执行bash脚本
修改docker-compose.yml中Keycloak服务的配置,将entrypoint设为bash,让后续的command作为bash命令执行:
services: keycloak: image: quay.io/keycloak/keycloak:latest environment: - KC_DB_PASSWORD=i5QRJNRmD13q8TEghc2v - KC_PROXY=edge - KC_HTTP_ENABLED=true - KC_HOSTNAME_STRICT=false - KEYCLOAK_IMPORT=/opt/keycloak/data/import entrypoint: bash command: > -c " /opt/keycloak/bin/kc.sh build && /opt/keycloak/bin/kc.sh start --optimized --proxy edge --hostname-strict=false " depends_on: - database
方案2:简化命令,利用Keycloak自动构建逻辑
kc.sh start --optimized会自动检测是否需要执行build操作,无需手动调用。同时你已经通过环境变量配置了代理、hostname等参数,无需在command中重复指定:
services: keycloak: image: quay.io/keycloak/keycloak:latest environment: - KC_DB_PASSWORD=i5QRJNRmD13q8TEghc2v - KC_PROXY=edge - KC_HTTP_ENABLED=true - KC_HOSTNAME_STRICT=false - KEYCLOAK_IMPORT=/opt/keycloak/data/import command: start --optimized depends_on: - database
这个方案更简洁,符合Keycloak官方镜像的设计逻辑。
内容的提问来源于stack exchange,提问作者Ali Radan
相关产品推荐
相关产品推荐

