我将 Docker 用于我的 PHP 开发环境,并以这种方式使用 Docker Compose 设置我的图像:
myapp:
build: myapp/
volumes:
- ./myapp:/var/www/myapp
php:
build: php-fpm/
expose:
- 9000:9000
links:
- elasticsearch
volumes_from:
- myapp
extra_hosts:
# Maybe the problem is related to this line
- "myapp.localhost.com:127.0.0.1"
nginx:
build: nginx/
ports:
- 80:80
links:
- php
volumes_from:
- myapp
elasticsearch:
image: elasticsearch:1.7
ports:
- 9200:9200
Nginx 配置(在它的 Docker 文件中)有一个名为 myapp.localhost.com
的虚拟主机(server_name
参数)并且指向 /var/www/myapp
文件夹。
一切正常。
但这是我的问题:我的 Web 应用程序通过带有 cURL 的 myapp.localhost.com
URL 调用自身(在 PHP 代码中),通过运行此命令可以更轻松地重现:
docker-compose run php curl http://myapp.localhost.com
cURL 响应如下:
cURL error 7: Failed to connect to myapp.localhost.com port 80: Connection refused
您知道我如何调用应用程序网址吗?我的 docker-compose.yml
文件中是否遗漏了什么?
最佳答案
几个月后,我回来发布我的问题的(非常简单的)答案:
- 删除 Nginx 主机配置中的
server_name
条目 - 删除
docker-compose.yml
文件中的extra_hosts
条目(不是必须的,但没用)
只需调用带有Nginx容器名称的服务器作为主机(此处为nginx
):
docker-compose exec php curl http://nginx
关于php - Docker 开发环境中 Localhost 连接被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32844869/