从本地另一个容器内连接到 dockerized REST Jax RS 端点
Connecting to a dockerized REST JaxRS end point from within another container locally
我正在尝试连接到 JaxRS liferay portlet 的休息端点。
如果我尝试使用 http://localhost:8078/engine-rest/process-definition
通过邮递员连接
它工作 200 没问题。
我正在尝试从同一 docker 网络的另一个 docker 容器部分连接到同一端点,我已尝试使用本地主机,但收到错误消息:
java.net.ConnectException: Connection refused (Connection refused)
我也试过http://wasp-engine:8078,wasp-engine是容器的docker名称。仍然收到相同的错误。
这是我的 compose 文件中的两个容器:
wasp-engine:
image: in/digicor-engine:test
container_name: wasp-engine
ports:
- "8078:8080"
depends_on:
mysql:
condition: service_healthy
wasp:
image: in/wasp:local2
container_name: Wasp
volumes:
- liferay-document-library:/opt/liferay/data
environment:
- camundaEndPoint=http://wasp-engine:8078
ports:
- "8079:8080"
depends_on:
mysql:
condition: service_healthy
它们都连接到属于同一 docker 网络的 mysql fine,并通过以下方式引用:
jdbc.default.url=jdbc:mysql://mysql/liferay_test
tl;博士
使用http://wasp-engine:8080
原因
在您的 docker-中编写
ports: - "8078:8080"
wasp-engine
上的字段会将 docker 容器的端口 8080
暴露给主机的端口 8078
。这就是使您的邮递员能够通过本地主机成功连接到容器的原因。但是,一旦在 docker 容器内,localhost 指的是 docker 容器本身。此端口转发不再适用。
使用 docker-compose 您可以使用容器的名称来定位特定的 docker 容器。您提到您使用 URI http://wasp-engine:8078
尝试过此操作。当您以这种方式访问容器时,将使用原始端口而不是主机的转发端口。这意味着 docker 容器应该以端口 8080
为目标。
将它们放在一起,最终的 URI 应该是 http://wasp-engine:8080
。
我正在尝试连接到 JaxRS liferay portlet 的休息端点。 如果我尝试使用 http://localhost:8078/engine-rest/process-definition
通过邮递员连接它工作 200 没问题。
我正在尝试从同一 docker 网络的另一个 docker 容器部分连接到同一端点,我已尝试使用本地主机,但收到错误消息:
java.net.ConnectException: Connection refused (Connection refused)
我也试过http://wasp-engine:8078,wasp-engine是容器的docker名称。仍然收到相同的错误。
这是我的 compose 文件中的两个容器:
wasp-engine:
image: in/digicor-engine:test
container_name: wasp-engine
ports:
- "8078:8080"
depends_on:
mysql:
condition: service_healthy
wasp:
image: in/wasp:local2
container_name: Wasp
volumes:
- liferay-document-library:/opt/liferay/data
environment:
- camundaEndPoint=http://wasp-engine:8078
ports:
- "8079:8080"
depends_on:
mysql:
condition: service_healthy
它们都连接到属于同一 docker 网络的 mysql fine,并通过以下方式引用:
jdbc.default.url=jdbc:mysql://mysql/liferay_test
tl;博士
使用http://wasp-engine:8080
原因
在您的 docker-中编写
ports: - "8078:8080"
wasp-engine
上的字段会将 docker 容器的端口 8080
暴露给主机的端口 8078
。这就是使您的邮递员能够通过本地主机成功连接到容器的原因。但是,一旦在 docker 容器内,localhost 指的是 docker 容器本身。此端口转发不再适用。
使用 docker-compose 您可以使用容器的名称来定位特定的 docker 容器。您提到您使用 URI http://wasp-engine:8078
尝试过此操作。当您以这种方式访问容器时,将使用原始端口而不是主机的转发端口。这意味着 docker 容器应该以端口 8080
为目标。
将它们放在一起,最终的 URI 应该是 http://wasp-engine:8080
。