目前,我正在一个 Docker 容器内运行一个 Node.js 应用程序,该程序需要连接到另一个容器中运行的 Camunda。
我使用以下命令启动容器:
docker run -d --restart=always --name camunda -p 8000:8080 camunda/camunda-bpm-platform:tomcat-7.4.0
docker run -d --name app -p 3000:3000 app
现在两个应用程序都在运行,我可以通过导航到主机IP的8000端口访问camunda,运行wget http://localhost:8000 -q -O -
也会返回camunda页面。当我使用docker exec -it app sh
登录到我的应用容器并键入wget http://localhost:8000 -q -O -
时,我无法访问camunda。相反,我会收到以下错误:
wget: can't connect to remote host (127.0.0.1): Connection refused
当我使用
--link camunda:camunda
将我的应用容器连接到camunda容器,并在我的应用容器中键入wget http://camunda:8000 -q -O -
时,我会收到以下错误:wget: can't connect to remote host (172.17.0.4): Connection refused`
我看到了这个选项,所以我使用--add-host camunda:my_hosts_ip
启动了我的应用程序容器,并再次尝试了wget,结果如下:
wget: can't connect to remote host (149.210.227.191): Operation timed out
当我在我的主机上运行
wget http://149.210.227.191:5001 -q -O -
时,立即获得正确的响应。理想情况下,我希望只需启动我的应用容器,无需以任何方式提供外部IP,并让应用容器通过localhost或将camunda容器链接到我的应用容器来使用camunda服务。实现这一点最简单的方法是什么?
wget http://camunda:8000 -q -O -
将无法工作,而wget http://camunda:8080 -q -O -
可以正常工作。如果能够在我自己选择的端口上访问Camunda就更好了,但我想当使用链接的容器时可能不可能实现这一点。 - Koninghsocat
、使用反向代理,例如nginx
,甚至可以添加iptable
或更改 Camunda 的源代码,因为它是开源的。 - Auzias-v PATH/TO/server.xml:/camunda/conf/server.xml
命令启动容器。 - Sebastian Menski