Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker networking-KeyClope无法连接到在单独Docker实例中运行的postgresql_Postgresql_Docker_Keycloak - Fatal编程技术网

Docker networking-KeyClope无法连接到在单独Docker实例中运行的postgresql

Docker networking-KeyClope无法连接到在单独Docker实例中运行的postgresql,postgresql,docker,keycloak,Postgresql,Docker,Keycloak,我有两个docker容器,一个运行KeyClope 4.7.0.Final,一个运行Postgresql 钥匙斗篷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

我有两个docker容器,一个运行KeyClope 4.7.0.Final,一个运行Postgresql

钥匙斗篷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"]
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
Postgres 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"]
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文件中有问题的部分的一个示例,特别是
连接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>
我按照指南进行了操作,但我无法让KeyClope找到postgresql数据库。据我所知,网络
mynet
应该在运行keybeapt的容器内部可用

任何帮助都将不胜感激。谢谢

更新 Postgres从以下几个方面开始:

docker run --name postgresql -p 5432:5432 --network my-net postgresql
和钥匙斗篷:

docker run --name keycloak -p 8080:8180 --network my-net keycloak

我的建议是:不要只为主题/模块创建自己的Docker映像。使用官方的KeyClope映像并将自定义文件装载为卷=>您将有更轻松的映像更新。官方映像还提供DB config env变量,因此您无需使用自定义配置文件:

docker run -d \
  --name keycloak \
  --net my-net \
  -p 8080:8080 \
  -p 443:8443 \
  -v $PWD/themes/mytheme:/opt/jboss/keycloak/themes/healthjoiner \
  -v $PWD/modules:/opt/jboss/keycloak/modules/system/layers/keycloak \
  -e DB_VENDOR=postgres \
  -e DB_ADDR=postgresql \
  -e DB_PORT=5432 \
  -e DB_DATABASE=<DB> \
  -e DB_USER=<DBUSER> \
  -e DB_PASSWORD=<DBPASSWORD> \
  jboss/keycloak:4.7.0.Final
docker运行-d\
--名字钥匙斗篷\
--我的网\
-p 8080:8080\
-p 443:8443\
-v$PWD/themes/mytheme:/opt/jboss/keydape/themes/healthjoiner\
-v$PWD/modules:/opt/jboss/keydrope/modules/system/layers/keydrope\
-e DB_供应商=postgres\
-e DB_ADDR=postgresql\
-e DB_端口=5432\
-e数据库=\
-e DB_用户=\
-e DB_密码=\
jboss/keydepot:4.7.0.Final
见文件:

无论如何,您案例中的连接URL是(仅使用容器名称):

jdbc:postgresql://keycloak:5432/
您是如何启动容器的?我想查看容器的网络和名称配置。是否需要修改连接到postgres的xml文件?你能按照官方的docker compose示例来做吗?@RyanDawson我也尝试过,但没有成功,不过我现在没有使用docker compose。我将这些db值作为ENV属性添加到Dockerfile@JanGaraj我已经更新了这个问题,包括我用来启动容器的命令。我想这就是你想要的?我会使用docker compose with links选项,然后连接url将是jdbc:postgresql://postgres_service_name . 默认网络也将由docker compose创建。