您好我尝试在Docker容器中启动一个独立的keycloak Server。
我设置了一个" env"生产变量,本地或者测试服务器连接到正确的MySQL数据库。
但是在AWS上启动它似乎忽略了env vars。 Localy Dockermachine工作正常。
以下是配置设置:
在standalone.xml中:
...for (empty) local
<datasource jndi-name="java:/jboss/datasources/KeycloakMysqlDS-default" pool-name="KeycloakMysqlDS-default" enabled="true">
...for production
<datasource jndi-name="java:/jboss/datasources/KeycloakMysqlDS-production" pool-name="KeycloakMysqlDS-production" enabled="true">
...
<provider name="default" enabled="true">
<properties>
<property name="dataSource" value="java:jboss/datasources/KeycloakMysqlDS-${env.env}"/>
....
&#39; env&#39; var经验证设置为&#34;生产&#34;在AWS上,在本地清空,并在本地dockermachine更改中做出反应。
刚开始使用AWS dockermachine时,它使用的是默认值而不是{env.env} var。
之前有人看过这种行为吗?或者知道如何纠正它?
提前致谢
格里
更新: 那么错误不会在启动时发生。 它发生在几分钟后:
...
WARN [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (JCA PoolFiller) IJ000610: Unable to fill pool: java:/jboss/datasources/KeycloakMysqlDS-default: ... Connection refused.
...
所以它可能不是env var的问题。 相反,Keycloak似乎试图打开与已设置数据源的连接......这是真的吗?
答案 0 :(得分:0)
完成另一个问题......
Keycloak默认出价到另一个IP。必须将ip设置为0.0.0.0才能在Docker容器内工作。
在configuration.xml中......
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:0.0.0.0}"/>
<!--<inet-address value="${jboss.bind.address.management:127.0.0.1}"/>-->
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:0.0.0.0}"/>
<!--<inet-address value="${jboss.bind.address:127.0.0.1}"/>-->
</interface>
</interfaces>