使用Docker在AWS Elastic Beanstalk上部署失败

时间:2016-03-05 14:07:52

标签: amazon-web-services nginx playframework docker elastic-beanstalk

我正在使用Play框架开发Web应用程序,并且我使用单个docker容器和负载均衡器在AWS Elastic Beanstalk上运行它。通常,一切运行正常,但是当我重建整个环境时,我收到以下错误:

  

实例上的命令失败。返回码:6输出:(TRUNCATED)...在/etc/nginx/sites-enabled/elasticbeanstalk-nginx-docker-proxy.conf:11 nginx:[emerg] host找不到上游" docker&#34 ;在/etc/nginx/sites-enabled/elasticbeanstalk-nginx-docker-proxy.conf:24 nginx:配置文件/etc/nginx/nginx.conf测试失败。

当我登录EC2时,我可以看到没有Docker镜像正在运行,因此Nginx服务器无法启动。我在日志中看不到任何其他错误(或者我可能不知道在哪里看)。奇怪的是,在重建环境之前,同样的版本运行良好。

我使用以下Dockerfile进行部署:

FROM java
COPY <app_folder> /opt/<app_name>
WORKDIR /opt/<app_name>
CMD [ "/opt/<app_name>/bin/<app_name>", "-mem", "512", "-J-server" ]
EXPOSE 9000

任何想法可能是什么问题或在哪里检查更多细节?

2 个答案:

答案 0 :(得分:3)

我有同样的问题。 elasticbeanstalk-nginx-docker-proxy.conf指的是proxy_pass http://docker,但缺少对此的定义。你需要添加像

这样的东西
    # List of application servers
    upstream docker {
        server 127.0.0.1:8080;  # your app
    }

(确保它在server指令之外。)

答案 1 :(得分:-1)

我刚刚遇到了同样的挑战(将更新的Docker镜像部署到Elastic Beanstalk)。这取决于你想要做什么,但我发现的是(一旦你有eb cli设置)你可以使用eb deploy命令推出你的代码更改而不用担心图像在所有

当然,您仍然希望将您的映像推送到您的仓库以便与其他开发人员共享(或与其他开发人员一起),或者如果您确实因某种原因需要更改环境配置...但是如果您&#39;只是希望将代码推送到eb deploy

不幸的是,就错误的具体情况而言,我可以在那里提供很多帮助。祝你好运!