【问题标题】:Docker run results in "host not found in upstream" errorDocker 运行导致“在上游找不到主机”错误
【发布时间】:2016-05-11 07:41:01
【问题描述】:

我有一个托管在 Docker 中的纯前端 Web 应用程序。后端已经存在,但它有“自定义 IP”地址,所以我必须更新我的本地 /etc/hosts 文件才能访问它。所以,从我的本地机器上,我可以毫无问题地访问后端 API。

但问题是 Docker 不知何故无法解析这个“自定义 IP”,即使主机写入容器(图像?)/etc/hosts 文件中也是如此。

当 Docker 容器启动时,我看到了这个错误

$ docker run media-saturn:dev
2016/05/11 07:26:46 [emerg] 1#1: host not found in upstream "my-server-address.com" in /etc/nginx/sites/ms.dev.my-company.com:36
nginx: [emerg] host not found in upstream "my-server-address.com" in /etc/nginx/sites/ms.dev.my-company.com:36

我通过 Dockerfile 中的命令更新 /etc/hosts 文件,像这样

# install wget
RUN  apt-get update \
  && apt-get install -y wget \
  && rm -rf /var/lib/apt/lists/*

# The trick is to add the hostname on the same line as you use it, otherwise the hosts file will get reset, since every RUN command starts a new intermediate container
# it has to be https otherwise authentification is required
RUN echo "123.45.123.45 my-server-address.com" >> /etc/hosts && wget https://my-server-address.com 

当我 ssh 进入机器查看 /etc/hosts 的当前内容时,确实存在“123.45.123.45 my-server-address.com”这一行。

谁能帮我解决这个问题?我是 Docker 新手。

【问题讨论】:

  • 您收到什么错误信息?您是否支持代理?
  • @VonC 错误信息是host not found in upstream "ms-test.internal.pricefx.eu" in /etc/nginx/sites/ms.dev.topmonks.com:36(上面已经提到过)。没有代理
  • 你使用什么命令来构建你的镜像? (意思是,您是否构建了标记为media-saturn:dev 的图像,其中wget ms-test.internal.pricefx.eu 成功了?)
  • 尝试仅先运行 bash docker run -it media-saturn:dev /bin/bash 如果它在图像中。检查您是否真的可以解析 dns。

标签: nginx docker dockerfile


【解决方案1】:

我已经解决了这个问题。有两件事在起作用。

一个是它在本地的工作方式,另一个是它在 Docker Cloud 中的工作方式。

本地工作流程

  • cd 到项目的根目录,Dockerfile 所在的位置
  • 构建镜像:docker build -t media-saturn:dev .
  • 运行构建的镜像:docker run -it --add-host="my-server-address.com:123.45.123.45" -p 80:80 media-saturn:dev

Docker 云工作流程

  • extra_host 指令添加到您的堆栈文件中,像这样

  • 然后在 Docker 云中点击 Redeploy,使更改生效

    额外主机:

    • 'my-server-address.com:123.45.123.45'

优化提示

  • 忽略尽可能多的文件夹以加快向 docker deamon 发送数据的过程
  • 添加 .dockerignore 文件
  • 通常您要添加文件夹,如node_modeluesbower_modulestmp
  • 在我的情况下,tmp 包含大约 1.3GB 的小文件,因此忽略它会显着加快处理速度

【讨论】:

    猜你喜欢
    • 2020-07-08
    • 2018-03-03
    • 2020-06-15
    • 2019-04-13
    • 2019-09-01
    • 2016-02-11
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    相关资源
    最近更新 更多