繁体   English   中英

如何从 docker 容器调用本地资源?

[英]How to call a local ressource from a docker container?

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

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

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

当我将 'file_get_contents' function 与 'localhost' 一起使用时,我会收到相同的消息。

注意:调用外部资源适用于这些功能。

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

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

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

谢谢。

使用 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 容器需要具有 PHP-FPM 容器的depends_on (从 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 示例中,您的本地主机是网络服务器,所以这应该可以工作: https://webserver/photo.php?id=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 证书,而不是之前测试过的服务名称......

我必须做什么?

谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM