Symfony Docker-nginx:在上游中找不到主机
我下载正式的docker包,然后设置docker compose。一切编译正常,但如果我得到docker compose up,我会收到以下错误消息:Symfony Docker-nginx:在上游中找不到主机,symfony,docker,nginx,Symfony,Docker,Nginx,我下载正式的docker包,然后设置docker compose。一切编译正常,但如果我得到docker compose up,我会收到以下错误消息: project-websrv | 2017/09/22 10:18:35 [emerg] 1#1: host not found in upstream "php-fpm" in /etc/nginx/conf.d/default.conf:25 project-websrv | nginx: [emerg] host not found in
project-websrv | 2017/09/22 10:18:35 [emerg] 1#1: host not found in upstream "php-fpm" in /etc/nginx/conf.d/default.conf:25
project-websrv | nginx: [emerg] host not found in upstream "php-fpm" in /etc/nginx/conf.d/default.conf:25
project-php exited with code 0
nginx.conf第25行:
fastcgi_pass php-fpm:9000;
mydocker compose.yml
version: "3.1"
services:
mysql:
image: mariadb
container_name: project-mariadb
environment:
MYSQL_ROOT_PASSWORD: root
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: project-pma
restart: always
links:
- mysql
ports:
- 8183:80
environment:
PMA_HOST: mysql
PMA_USER: root
PMA_PASSWORD: root
php-fpm:
build: php
container_name: project-php
working_dir: /var/www/project
volumes:
- ../../Sources/project/trunk/src/:/var/www/project
- ./php/php-ini-overrides.ini:/etc/php/7.0/fpm/conf.d/99-overrides.ini
links:
- mysql
webserver:
image: nginx
container_name: project-websrv
working_dir: /var/www/project
volumes:
- ../../Sources/project/trunk/src/:/var/www/project
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
ports:
- "8080:80"
links:
- php-fpm
文件夹结构:
php/
- Dockerfile
- php-ini-overrides.ini
mysql/
nginx/
- nginx.conf
*docker-compose.yml
完整nginx.conf
server {
listen 80 default;
client_max_body_size 108M;
access_log /var/log/nginx/application.access.log;
root /var/www/project/web;
index app_dev.php;
rewrite ^/app\.php/?(.*)$ /$1 permanent;
try_files $uri @rewriteapp;
location @rewriteapp {
rewrite ^(.*)$ /app_dev.php/$1 last;
}
# Deny all . files
location ~ /\. {
deny all;
}
location ~ ^/(app|app_dev)\.php(/|$) {
fastcgi_pass php-fpm:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_index app.php;
send_timeout 1800;
fastcgi_read_timeout 1800;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log";
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
include fastcgi_params;
}
# Statics
location /(bundles|media) {
access_log off;
expires 30d;
try_files $uri @rewriteapp;
}
}
我检查了两次URL,看起来一切正常,nginx.conf被设置并存储在这个URL中。我在另一个容器中使用了相同的配置,只是没有phpmyadmin和mariadb,而且运行良好。我在文档中找到了一些关于如何添加别名的帮助:
这个答案可以通过你的反馈来简化。您真正需要添加什么?您能给我看一下/etc/nginx/conf.d/default.conf吗?我将其添加到上面,但这可能是docker缓存的问题,因为,在我为另一个容器使用相同的名称之前,但在构建此容器之前,我重新启动docker,我不确定,但我认为在运行nginx时,它会尝试连接到
php fpm
主机。并且php fpm
容器可能尚未启动。我没有使用fastcgi\u pass
,但是对于proxy pass
works解决方案:添加resolver 127.0.0.11代码>到位置~^/(app | app|u dev)\.php(/|$)
部分。好的,我将docker重置到工厂,删除所有容器和图像。但是我得到了这些错误:error:for project websrv无法启动服务webserver:oci运行时错误:container_linux.go:262:启动container进程导致“process_linux.go:339:…:您是否正在尝试将目录装载到文件上(反之亦然)?检查指定的主机路径是否存在,是否为预期的类型
您解决过此问题吗?我现在有一个确切的主机路径,我正准备放弃我的想法我正在寻找解决方案,这对我帮助很大…谢谢!
services:
# ...
php-fpm:
# ...
networks:
proxy: # maybe use "default" here
aliases:
- php-fpm
webserver:
# ...
links: # seems to have no effect alone
- php-fpm
networks:
- proxy # maybe you can also use the "default" network
depends_on: # start this container after the dependencies
- php-fpm
networks:
proxy: