当前位置: 首页 > 知识库问答 >
问题:

Docker Networking-nginx:[emerg]主机未在上游找到

姬翰林
2023-03-14

我最近开始迁移到Docker1.9和Docker-Compose1.5的网络功能,以取代使用链接。

到目前为止,使用链接,nginx通过docker-compose连接到我的php5-fpm fastcgi服务器(位于一个组中的不同服务器上)没有任何问题。最近,当我运行docker-compose-x-networking up时,我的php-fpm、mongo和nginx容器启动了,但是nginx却以[emerg]1#1:在/etc/nginx/conf.d/default.conf:16中的上游“waapi_php_1”中找不到主机而立即退出

但是,如果我在php和mongo容器运行时再次运行docker-compose命令(nginx退出),那么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

这是nginx的default.conf:

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;
    }
}

共有1个答案

王旺
2023-03-14

在引入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特定的变通方法。

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

  1. 让nginx重试,直到php服务器启动-我更喜欢这个
  2. 使用上面描述的volums_from变通方法--我将避免使用这个方法,因为卷泄漏到不必要的容器中。
 类似资料:
  • 问题内容: 我最近开始迁移到Docker 1.9和Docker-Compose 1.5的网络功能,以使用链接进行替换。 到目前为止,链接没有问题,nginx通过docker-compose连接到我的php5-fpm fastcgi服务器,该服务器位于一组中的另一台服务器中。新近,虽然当我运行php- fpm时,mongo和nginx容器启动,但是nginx随即退出 但是,如果我在运行php和mon

  • 问题内容: 我在ECS服务器上运行docker-nginx。我的Nginx服务突然停止,因为其中一台服务器的proxy_path无法访问。错误如下: 我的配置文件如下: 配置文件中有很多服务器,即使一台服务器宕机,我也需要运行nginx。有什么办法可以解决? 任何解决此问题的建议将不胜感激。 问题答案: 包含以防止Nginx在您的站点关闭时崩溃,请包含一个resolver指令,如下所示: 警告!使

  • 问题内容: 我已经跟随该网站http://raspberrypihelp.net/tutorials/24-raspberry-pi- webserver 在我的Raspberry Pi上设置HTTP服务器nginx并尝试设置一个站点调用 **example.com** 。但是当我跑步时,它说 重新启动nginx:nginx:/etc/nginx/sites-enabled/example.com

  • 由于客户端问题,我必须把laravel 4应用程序共享托管服务。但我在[laravelio]遵循了这个过程,其中包括。 这应该是可行的,但是当我访问url时,我得到了这样的结果:在这个服务器上找不到请求的url/登录名。请问有什么问题,因为我不明白。可能是关于配置的。htacces文件。 任何帮助都将得到赞赏。感谢网站是在:benin1897.com 我刚刚发现public_html中没有. ht

  • 我们在应用程序中使用docker compose,但不熟悉应用程序的这一部分。在运行<code>docker Cosme up--build<code>后,我们遇到了此错误:

  • 突然,我得到了下面的nginx错误 如果我跑了 我一无所获。端口 80 上没有任何内容 然后我运行以下命令: 我被难倒了。我该如何调试这个? 我在端口8070上使用代理传递的uwsgi。uwsgi正在运行。Nginx不是。我正在使用ubuntu 12.4 下面是我的nginx conf文件的相关部分 这是我如何在ubuntu 12.04上安装ngin x