无法访问在Docker上find的文件(无法打开stream:连接超时)
我有以下的Docker容器设置来为我的CMS提供动力,但是我在extensions
卷中托pipe的PHP脚本中遇到了一些主要问题。
version: '2' services: bolt: image: rossriley/docker-bolt:3.2 network_mode: bridge environment: - BOLT_TITLE=Red Moon Workshop ports: - 80:80 volumes: - ./db-data:/var/www/html/app/database - ./files:/var/www/html/public/files - ./app/config:/var/www/html/app/config - ./public/theme/redmoon:/var/www/html/public/theme/redmoon - ./extensions:/var/www/html/extensions restart: always
在我的extensions
卷内,我有一个PHP脚本,它从存储在同一主机中的文件中读取头文件。 脚本通常稍微复杂一些,但是我把它简化为一个失败点:
$image = 'http://img.gdocker.com/php/1497665310_slide-splash-bg.png'; $headers = get_headers($image); return $headers;
该错误抱怨说由于超时而无法打开stream,但是如果我在浏览器中打开URL,它就可以正常工作。
An exception has been thrown during the rendering of a template ("Warning: get_headers(http://img.gdocker.com/php/1497665310_slide-splash-bg.png): failed to open stream: Connection timed out")
我能够在本地工作,但是一旦我将应用程序推向数字海洋,它开始失败,所以我不确定这里发生了什么。 我有一个存储在Docker容器中的脚本的PHP依赖项,我把脚本存储在一个卷中,但是我已经在Docker容器上试了两种方法,没有运气。
如果我尝试访问任何远程托pipe的文件,它的工作没有问题。 (任何imgur或谷歌等)
这可能是一个权限问题,或Docker和主机之间的通信中的某种细分? 我是相当新的PHP和Docker,所以任何援助将不胜感激。
更新#1
我试图从主机通过以下命令curl文件,它的工作。
curl -i http://img.gdocker.com/php/1497665310_slide-splash-bg.png
我试图在 Docker容器中做同样的事情,并失败,出现以下错误:
Failed to connect to beta.redmoonworkshop.us port 80: Connection timed out
如果我尝试curl相同的图像(但在本地主机)它的作品。
curl -i http://localhost/files/2017-06/1497665310_slide-splash-bg.png
我已经解决了这个问题,我已经更新了我docker-compose.yml
文件,为/etc/hosts
文件添加了一组额外的主机:
extra_hosts: - "beta.redmoonworkshop.us:127.0.0.1"
现在,我可以curl域,并获得存储在主机上的文件没有问题。
- WordPress Docker容器的默认configuration
- 运行Dockerrun.aws.json文件时出错ERROR:ValueError :: Extra数据
- Docker:在暴露的端口上拒绝连接
- 如何使用docker-compose将PHP容器与nginx容器连接起来?
- 如何编写Docker Cloud的堆栈文件?
- 如何确保docker容器中的MySQL使用docker-entrypoint-initdb.d中的脚本进行初始化?
- Docker Swarm – networking覆盖不能连接所有容器
- mysql一般查询使用docker-compose日志logindocker
- Docker:从Windows主机挂载卷