У меня есть два док-контейнера, один работает с Keycloak 4.7.0.Final, а другой работает с Postgresql.
Keycloak Dockerfile
FROM jboss/keycloak:4.7.0.Final
ADD themes/mytheme /opt/jboss/keycloak/themes/healthjoiner
ADD modules /opt/jboss/keycloak/modules/system/layers/keycloak
ADD standalone-ha.xml /opt/jboss/keycloak/standalone/configuration/
ADD keycloak-config.json /opt/jboss/
RUN mkdir -p $JBOSS_HOME/standalone/data
CMD ["-b", "0.0.0.0", "-Dkeycloak.migration.action=import -Dkeycloak.migration.provider=singleFile -Dkeycloak.migration.file=/opt/jboss/keycloak-config.json -Dkeycloak.migration.strategy=OVERWRITE_EXISTING"]
Postgres Dockerfile
FROM postgres:9.5
# set root user details
ENV POSTGRES_PASSWORD=postgres
ENV POSTGRES_USER=postgres
ADD scripts/init.sql /docker-entrypoint-initdb.d/
# expose the 5432 port to outside the container
EXPOSE 5432
Вот проблемный раздел в файле standalone-ha.xml, в частности значение connection-url
.
<subsystem xmlns="urn:jboss:domain:datasources:5.0">
<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true"
use-java-context="true">
<connection-url>jdbc:postgresql://my-net/keycloak</connection-url>
<driver>postgresql</driver>
<pool>
<max-pool-size>20</max-pool-size>
</pool>
<security>
<user-name>keycloak</user-name>
<password>sa</password>
</security>
</datasource>
<drivers>
<driver name="postgresql" module="org.postgresql">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
</subsystem>
Postgres запускается нормально.Когда я запускаю Keycloak, я получаю java.net.UnknownHostException: my-net
.Я также попытался localhost
и получил ту же ошибку.
Наконец, я создал пользовательскую мостовую сеть в соответствии с руководством по Docker Networking
docker network create --driver bridge my-net
Я следовал руководству, но мне не удалось найти keycloak, чтобы найти базу данных postgresql.Насколько я понимаю, сеть my-net
должна быть доступна внутри контейнера, работающего с keycloak.
Любая помощь будет принята с благодарностью.Спасибо
ОБНОВЛЕНИЕ
Postgres был запущен со следующим:
docker run --name postgresql -p 5432:5432 --network my-net postgresql
И Keycloak с:
docker run --name keycloak -p 8080:8180 --network my-net keycloak