码头工人:在码头工人内部调用Web服务

时间:2019-11-27 13:58:19

标签: php docker

我在docker中有

  • php-5.6-apache-Apache和php
  • zrrrzzt / docker-unoconv-webservice-从Libre Office文档创建pdf的网络服务
  • 两个容器都使用网络my-network

从外壳创建pfs可以正常工作:

curl --form file=@/var/xxx/documents/output-odt/test.odt http://localhost:3000/unoconv/pdf> /var/xxx/documents/output-odt/test.pdf

但是当从我的php-5.6-apache容器中调用localhost时,无法正确识别它。

当我使用检查的容器的IP地址时,它可以从php运行,例如http://172.18.0.4:3000。但这不是一个好的解决方案,因为服务器重启时IP地址会更改。

问题:

  • 如何在Docker中调用Web服务?
  • 应该使用什么代替localhost?
  • 或者如何指定容器的网址?
  • 或者我该如何处理我的网络?

谢谢

2 个答案:

答案 0 :(得分:-1)

  

如何在Docker中调用Web服务?

通过将容器端口发布到使用该端口的计算机上来

通常是通过docker run -p完成的,但是我不确定您的设置

  

应该使用什么代替localhost?

0.0.0.0(与localhost相同,但包括计算机上的所有接口)

  

或者我该如何寻址我的网络?

您可以尝试让您的容器访问主机网络:https://docs.docker.com/network/network-tutorial-host/

答案 1 :(得分:-1)

现在我知道问题出在哪里:D

此命令仅在从其他容器调用时有效。在我的情况下从PHP。在OS Shell中无法正常运行,这就是为什么让我感到困惑的原因:

curl --form file=@/var/xxx/documents/output-odt/test.odt http://unoconv:3000/unoconv/pdf> /var/xxx/documents/output-odt/test.pdf

此命令仅在从OS Shell调用时有效: curl --form file=@/var/xxx/documents/output-odt/test.odt http://localhost:3000/unoconv/pdf> /var/xxx/documents/output-odt/test.pdf

感谢帮助