Docker 开发环境中的本地主机连接被拒绝
Localhost connection refused in Docker development environment
我在我的 PHP 开发环境中使用 Docker,并且我使用 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
文件夹。
一切正常。
但这是我的问题:我的网络应用程序通过 myapp.localhost.com
URL 和 cURL(在 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
您知道我如何调用应用 URL 吗?我的 docker-compose.yml
文件中是否遗漏了什么?
几个月后,我回到 post 我的问题的(非常简单的)答案:
- 删除 Nginx 主机配置中的
server_name
条目
- 删除
docker-compose.yml
文件中的 extra_hosts
条目(不需要,但没用)
只需以Nginx容器名称调用服务器作为主机(此处nginx
):
docker-compose exec php curl http://nginx
我在我的 PHP 开发环境中使用 Docker,并且我使用 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
文件夹。
一切正常。
但这是我的问题:我的网络应用程序通过 myapp.localhost.com
URL 和 cURL(在 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
您知道我如何调用应用 URL 吗?我的 docker-compose.yml
文件中是否遗漏了什么?
几个月后,我回到 post 我的问题的(非常简单的)答案:
- 删除 Nginx 主机配置中的
server_name
条目 - 删除
docker-compose.yml
文件中的extra_hosts
条目(不需要,但没用)
只需以Nginx容器名称调用服务器作为主机(此处nginx
):
docker-compose exec php curl http://nginx