繁体   English   中英

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

[英]Docker curl: (7) Failed to connect to localhost port 80: Connection refused

我从本地主机执行

$ curl本地主机

要么

卷曲

http:// usuariointerno:governance@beneficiarios.dev/app_dev.php/actividad

并确定。

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

$ curl本地主机--ipv4

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

要么

$ curl http:// usuariointerno:governance@beneficiarios.dev/app_dev.php/actividad

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

从Docker容器故障连接时,如果在Docker容器外部连接则可以,这是什么问题?

码头工人组成:

 version: '2' services: php: container_name: php build: ./php volumes: - ./www/:/var/www/html/ - ./php/.bashrc:/root/.bashrc - ./php/.gitconfig:/root/.gitconfig depends_on: - postgres - mysql nginx: container_name: nginx image: nginx ports: - 80:80 volumes: - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf - ./www/:/var/www/html/ - ./logs:/var/log/nginx depends_on: - php postgres: container_name: postgres image: postgres:9.5.5 volumes: - ./data/postgresql:/var/lib/postgresql/data - ./postgres/dumps:/dumps environment: - POSTGRES_PASSWORD=0000 - POSTGRES_USER=postgres mysql: container_name: mysql image: mysql:5.7.16 volumes: - ./data/mysql:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=0000 

nginx.conf

 server { listen 80; server_name beneficiarios.dev; root /var/www/html/beneficiarios/web; add_header Access-Control-Allow-Origin *; location / { try_files $uri /app.php$is_args$args;} #dev location ~ ^/(app_dev|config)\\.php(/|$) { add_header Access-Control-Allow-Origin *; fastcgi_buffers 16 256k; fastcgi_buffer_size 256k; fastcgi_pass php:9000; fastcgi_split_path_info ^(.+\\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; } location ~ ^/app\\.php(/|$) { fastcgi_buffers 16 256k; fastcgi_buffer_size 256k; fastcgi_pass php:9000; fastcgi_split_path_info ^(.+\\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; internal; } location ~ \\.php$ { return 404; } error_log /var/log/nginx/project_error.log; access_log /var/log/nginx/project_access.log; } 

Localhost(即127.0.0.1)始终表示与命令当前正在运行的主机相同。 因此,在您的主机上,它将调用您的主机,但是在容器中运行时,它将调用您的容器。

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

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

您应该问自己,为什么您的php容器需要调用您的nginx容器,这对我来说听起来很奇怪,因为通常nginx只会将“工作”转发给php。 例如,您能否只创建一个您想要的PHP脚本并直接调用它?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM