Edu*_*rra 1 docker docker-compose
我从本地主机执行
$ 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=0000Run Code Online (Sandbox Code Playgroud)
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;
}Run Code Online (Sandbox Code Playgroud)
Localhost(即127.0.0.1)始终表示与命令当前正在运行的主机相同。因此,在您的主机上,它将调用您的主机,但是在容器内运行时,它将调用您的容器。
我将假定您有一个将.dev域指向的DNS解析器localhost。nginx容器将主机的端口80转发给它,因此就好像它在主机上运行一样。因此,当您从主机调用它时,它会成功,因为调用转到了主机的端口80。
但是,当您在php容器内调用它时,它不是在调用主机,而是在php容器的端口80上调用,并且您的php容器内没有运行的网络服务器。如果您在nginx容器中进行了此调用,则它将起作用。
您应该问自己,为什么您的php容器需要调用您的nginx容器,这对我来说听起来很奇怪,因为通常nginx只会将“工作”转发给php。例如,您能否只创建一个您想要的PHP脚本并直接调用它?
如果确实需要调用nginx,请记住,同一docker-compose.yml文件中的容器可以按名称相互调用,因此您可以将其nignx用作主机名。
| 归档时间: |
|
| 查看次数: |
13529 次 |
| 最近记录: |