Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker curl:(7)无法连接到本地主机端口80:连接被拒绝_Docker_Docker Compose - Fatal编程技术网

Docker curl:(7)无法连接到本地主机端口80:连接被拒绝

Docker curl:(7)无法连接到本地主机端口80:连接被拒绝,docker,docker-compose,Docker,Docker Compose,我从本机主机和 $curl本地主机 或 $curl 回答是ok 如果从容器名“php”执行,并且: $curl本地主机--ipv4 无法连接到本地主机端口80:连接被拒绝 或 $curl curl:(7)无法连接到本地主机端口80:连接被拒绝 当从docker容器连接失败时,如果连接到docker容器外部,则正常,问题是什么 docker compose: 版本:“2” 服务: php: 容器名称:php 构建:./php 卷数: -./www/:/var/www/html/ -./php

我从本机主机和

$curl本地主机

$curl

回答是ok

如果从容器名“php”执行,并且:

$curl本地主机--ipv4

无法连接到本地主机端口80:连接被拒绝

$curl

curl:(7)无法连接到本地主机端口80:连接被拒绝

当从docker容器连接失败时,如果连接到docker容器外部,则正常,问题是什么

docker compose:

版本:“2”
服务:
php:
容器名称:php
构建:./php
卷数:
-./www/:/var/www/html/
-./php/.bashrc:/root/.bashrc
-./php/.gitconfig:/root/.gitconfig
取决于:
-博士后
-mysql
nginx:
容器名称:nginx
图片:nginx
端口:
- 80:80
卷数:
-./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
-./www/:/var/www/html/
-/日志:/var/log/nginx
取决于:
-php
博士后:
容器名称:postgres
图片:博士后:9.5.5
卷数:
-./data/postgresql:/var/lib/postgresql/data
-/postgres/dumps:/dumps
环境:
-POSTGRES_密码=0000
-POSTGRES\u USER=POSTGRES
mysql:
容器名称:mysql
图片:mysql:5.7.16
卷数:
-./data/mysql:/var/lib/mysql
环境:

-MYSQL\u ROOT\u PASSWORD=0000
Localhost或127.0.0.1,始终表示命令当前运行的主机相同。因此,在您的主机上,它将调用您的主机,但在您的容器中运行时,它将调用您的容器

我假设您有一个DNS解析器,它将
.dev
域指向
localhost
。nginx容器将来自主机的端口80转发给它,因此它就像是在您的主机上运行一样。因此,当您从主机调用它时,它会成功,因为调用会转到主机的端口80

但是,当您在php容器内调用它时,它不是在调用主机,而是在调用php容器的端口80,并且您的php容器内没有运行Web服务器。如果您在nginx容器中进行此调用,它将起作用

你应该问问自己,为什么你的php容器需要调用你的nginx容器,这听起来很奇怪,因为通常nginx只是将“工作”转发给php。例如,您可以创建一个php脚本来做您想要做的事情并直接调用它吗


如果您真的需要调用nginx,请记住,来自同一
docker compose.yml
文件的容器可以通过名称相互调用,因此您可以使用
nignx
作为主机名。

确切地说,在php容器中,没有虚拟主机。如果我在docker容器php/etc/hosts 172.18.0.5(docker nginx的ip)中添加它的工作原理。。。如何读取容器nginx的php容器虚拟主机?现在我尝试制作PHPUnit的“克隆”,并将非常适合测试端到端)