Docker网络-nginx:在上游找不到[emerg]主机

我最近开始迁移到Docker 1.9和Docker-Compose 1.5的网络功能,以使用链接进行替换。

到目前为止,链接没有问题,nginx通过docker-compose连接到我的php5-fpm

fastcgi服务器,该服务器位于一组中的另一台服务器中。新近,虽然当我运行docker-compose --x-networking upphp-

fpm时,mongo和nginx容器启动,但是nginx随即退出[emerg] 1#1: host not found in upstream

"waapi_php_1" in /etc/nginx/conf.d/default.conf:16

但是,如果我在运行php和mongo容器(退出nginx)时再次运行docker-compose命令,nginx将启动并自此正常运行。

这是我的docker-compose.yml文件:

nginx:

image: nginx

ports:

- "42080:80"

volumes:

- ./config/docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro

php:

build: config/docker/php

ports:

- "42022:22"

volumes:

- .:/var/www/html

env_file: config/docker/php/.env.development

mongo:

image: mongo

ports:

- "42017:27017"

volumes:

- /var/mongodata/wa-api:/data/db

command: --smallfiles

这是我default.conf的nginx:

server {

listen 80;

root /var/www/test;

error_log /dev/stdout debug;

access_log /dev/stdout;

location / {

# try to serve file directly, fallback to app.php

try_files $uri /index.php$is_args$args;

}

location ~ ^/.+\.php(/|$) {

# Referencing the php service host (Docker)

fastcgi_pass waapi_php_1:9000;

fastcgi_split_path_info ^(.+\.php)(/.*)$;

include fastcgi_params;

# We must reference the document_root of the external server ourselves here.

fastcgi_param SCRIPT_FILENAME /var/www/html/public$fastcgi_script_name;

fastcgi_param HTTPS off;

}

}

我如何才能使nginx仅与单个docker-compose调用一起使用?

回答:

在引入depends_on功能(在下面讨论)之前,可以使用“ volumes_from”作为解决方法。您要做的就是如下更改docker-compose文件:

nginx:

image: nginx

ports:

- "42080:80"

volumes:

- ./config/docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro

volumes_from:

- php

php:

build: config/docker/php

ports:

- "42022:22"

volumes:

- .:/var/www/html

env_file: config/docker/php/.env.development

mongo:

image: mongo

ports:

- "42017:27017"

volumes:

- /var/mongodata/wa-api:/data/db

command: --smallfiles

上述方法的一个重要警告是,php的体积暴露于nginx,这是不希望的。但是目前,这是可以使用的一种特定于docker的解决方法。

这可能是一个未来派的答案。因为该功能尚未在Docker中实现(从1.9版本开始)

有建议在Docker引入的新网络功能中引入“ depends_on”。但是关于相同的@

https://github.com/docker/compose/issues/374一直存在着长期的争论,因此,一旦实现,就可以使用depends_on功能来命令启动容器,但是在此刻,您将不得不采取以下措施之一:

  1. 使nginx重试,直到php服务器启动-我更喜欢这一台
  2. 如上所述,使用volums_from解决方法-由于卷会泄漏到不必要的容器中,因此我将避免使用它。

以上是 Docker网络-nginx:在上游找不到[emerg]主机 的全部内容, 来源链接: utcz.com/qa/399863.html

回到顶部