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