php - Docker 开发环境中 Localhost 连接被拒绝

标签 php curl nginx docker docker-compose

我将 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/

相关文章:

php - Woocommerce 插件 - 更新库存

python - 如何减少我的 python 应用程序连接到 mysql 服务器的超时

php - 如何使用 API?

php - 从查询结果中选择第一行下一秒等

shell - 将双引号中的命令行参数传递给 curl

Django Rest Framework Postman token 认证

php - 如果正在进行流式下载,Nginx PHP-FPM 不提供请求

nginx - Docker端口映射。在容器中运行daphne

php - 如何在 Laravel 中验证最大文件大小?

linux - curl 流输出逐行读取并包含条件