Nginx 在将 Docker 部署到 Amazon 时失败

Posted

技术标签:

【中文标题】Nginx 在将 Docker 部署到 Amazon 时失败【英文标题】:Nginx fail on Docker deployment to Amazon 【发布时间】:2016-03-16 16:40:54 【问题描述】:

我正在尝试通过 elasticbeanstalk 将 Docker 容器中的 .net asp web api 应用程序部署到亚马逊,但这是我得到的:

ERROR: Failed to start nginx, abort deployment
ERROR: [Instance: i-ecf0d365] Command failed on instance. Return code: 1 Output: nginx: [emerg] invalid host in upstream "172.17.0.2:5000/tcp" in /etc/nginx/conf.d/elasticbeanstalk-nginx-docker-upstream.conf:2
nginx: configuration file /etc/nginx/nginx.conf test failed

图片在这里:https://hub.docker.com/r/wedkarz/awsm8-api/

Dockerfile

FROM microsoft/aspnet:latest

COPY . /app
WORKDIR /app
RUN ["dnu", "restore"]

EXPOSE 5000/tcp
ENTRYPOINT ["dnx", "-p", "project.json", "web"]

elasticbeanstalk-nginx-docker-upstream.conf 文件

upstream docker 
    server 172.17.0.2:5000/tcp;
    keepalive 256;

【问题讨论】:

错误消息表明您的nginx 配置文件中有一个虚假的/tcp,在upstream server 指令或xxx_pass 指令上。 我用 conf 文件更新了问题?这个 nginx 配置是从哪里来的?它是否包含在 aspnet 图像中?还是码头工人出于某种原因放这个? 我不知道,但它似乎使用了5000/tcp作为端口,而不是正确的值应该是5000 @RichardSmith 你是对的!我将 Dockerfile 更改为 EXPOSE 5000,现在它可以工作了 :) @RichardSmith 不错。你能把这个作为正式答案提交吗? 【参考方案1】:

错误消息nginx: [emerg] invalid host in upstream "172.17.0.2:5000/tcp" 显示upstream server 参数,在端口号后面带有虚假字符/tcp。见upstream module documentation。

@Fishman 确认错误参数出现在nginx 配置文件中,并且该文件是从 Dockerfile 生成的,并且通过更改 EXPOSE 参数的值(在 Dockerfile 中)已更正问题从5000/tcp5000

【讨论】:

以上是关于Nginx 在将 Docker 部署到 Amazon 时失败的主要内容,如果未能解决你的问题,请参考以下文章

使用 nginx、django、daphne 部署到 docker

docker部署nginx,tomcat 练习

在Docker下部署Nginx

Docker部署nginx配置域名

docker部署nginx服务器

使用 Nginx 和 Docker 部署 React 和 Django