【问题标题】:How to call a local ressource from a docker container?如何从 docker 容器调用本地资源?
【发布时间】:2021-07-02 13:58:17
【问题描述】:

我使用“docker-compose.yml”构建了 Apache、Php7.3 和 Postgresql 映像。

一切正常,但是当我调用本地照片时,我收到一条警告消息并且照片没有出现。

这是错误信息: 警告:getimagesize(https://localhost:80/tofs.domain.com/photo.php?id=1):无法打开流:无法分配请求的地址。

当我将“file_get_contents”函数与“localhost”一起使用时,我得到了相同的消息。

注意:调用外部资源适用于这些函数。

我提请您注意: 我已经创建了一个网络。 ~ 所有容器共享同一个网络(通过“docker-compose.yml”)。 ~

但在我的情况下,我认为使用的函数(如:file_get_contents、getimagesize、...等)是指我的主机的“localhost/127.0.0.”1,而不是容器的网络。

那么,我该怎么做才能解决这个问题呢?

谢谢。

【问题讨论】:

  • 由于每个容器中的127.0.0.1 表示该容器本身,因此您应该使用container_name 而不是localhost。运行docker ps 并替换,然后尝试。

标签: php docker apache2.4


【解决方案1】:

我知道,我使用“links”而不是“depends_on”来匹配“php-FPM”和“apache2.4”,效果很好。

根据“localhost/127.0.0.1”,我的意思是“localhost”或“127.0.0.1”。 和 根据“https://localhost:80/tofs.domain.com/photo.php?id=1”,=>“tofs.domain.com”是一个用于测试的目录,而不是一个域:)。

当我之前尝试过您的解决方案时,服务器没有验证 URL,因为没有 SSL 证书

我已经为“localhost”创建了 SSL 证书,而不是之前测试过的服务名称...

我必须做什么?

谢谢。

【讨论】:

    【解决方案2】:

    使用 file_get_contents 将图像从 PHP 容器获取到 Web 服务器容器

    version: "3.7"
    services:      
      webserver:
        image: nginx:alpine
        working_dir: /api
        depends_on:
          - php-fpm
        volumes:
          - ./api:/api
      
      php-fpm:
        build: docker/php-fpm
        working_dir: /api
        volumes:
          - ./backend:/backend
    

    Webserver 容器需要有depends_on 的 PHP-FPM 容器(从 PHP-FPM 到 webserver 之间的链接也应该有效)。

    现在在 PHP 容器中,您可以执行 ping http://webserver,您应该会看到您的应用程序主页。

    我不知道你为什么要这样做:

    • localhost/127.0.0.1
    • https://localhost:80/tofs.domain.com/photo.php?id=1

    您不能将域添加到...域:)

    在我的 docker-compose.yml 示例中,您的本地主机是 webserver,所以这应该可以工作: https://webserver/photo.php?id=1

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 2018-03-18
      • 2021-03-29
      • 1970-01-01
      • 2020-03-23
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      • 2018-10-31
      相关资源
      最近更新 更多