猿问

docker:在 Docker 中调用 Web 服务

我在我的码头:

  • php-5.6-apache - Apache 和 php

  • zrrrzzt/docker-unoconv-webservice - 从 Libre Office 文档创建 pdf 的网络服务

  • 两个容器都使用网络 my-network

从 shell 创建 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 地址(例如http://172.18.0.4:3000 )时,它适用于 php 。但这不是一个好的解决方案,因为服务器重新启动时 IP 地址会发生变化。

问题:

  • 如何在 Docker 中调用 Web 服务?

  • 应该使用什么来代替 localhost?

  • 或者如何指定容器的 url?

  • 或者我该如何处理我的网络?

谢谢


长风秋雁
浏览 260回答 2
2回答

温温酱

现在我知道问题出在哪里了:D此命令仅在从其他容器调用时才有效。就我而言,来自 php.ini。它不适用于 OS shell,这就是我感到困惑的原因:curl --form 文件=@/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/输出-odt/test.pdf

万千封印

如何在 Docker 中调用 Web 服务?通过将容器端口发布到使用该端口的机器上。通常这是用 完成的docker run -p,但我不确定你的设置应该使用什么来代替 localhost?0.0.0.0(和 localhost 一样,但是包括你机器上的所有接口)或者我该如何处理我的网络?您可以尝试让您的容器访问主机网络:https ://docs.docker.com/network/network-tutorial-host/
随时随地看视频慕课网APP
我要回答