使用 Docker 在 AWS Elastic Beanstalk 上部署失败
Posted
技术标签:
【中文标题】使用 Docker 在 AWS Elastic Beanstalk 上部署失败【英文标题】:Deployment on AWS Elastic Beanstalk with Docker fails 【发布时间】:2016-06-19 07:30:54 【问题描述】:我正在使用 Play 框架开发一个 Web 应用程序,并使用单个 docker 容器和负载均衡器在 AWS Elastic Beanstalk 上运行它。通常,一切运行良好,但是当我重建整个环境时,我收到以下错误:
实例上的命令失败。返回码:6 输出:(TRUNCATED)... in /etc/nginx/sites-enabled/elasticbeanstalk-nginx-docker-proxy.conf:11 nginx: [emerg] host not found in upstream "docker" in /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
有什么想法可能是什么问题或在哪里查看更多详细信息?
【问题讨论】:
【参考方案1】:我遇到了同样的问题。 elasticbeanstalk-nginx-docker-proxy.conf
指的是proxy_pass http://docker
,但缺少它的定义。您需要添加类似
# List of application servers
upstream docker
server 127.0.0.1:8080; # your app
(确保它在 server
指令之外。)
【讨论】:
这不是真的(也许这个文件是在这个答案之后的 4 年内添加的)。但您可以在/etc/nginx/conf.d/elasticbeanstalk-nginx-docker-upstream.conf
找到上游定义【参考方案2】:
我刚刚完成了同样的挑战(将更新的 Docker 映像部署到 Elastic Beanstalk)。这取决于你到底想做什么,但我发现(一旦你有 eb cli 设置)你可以使用eb deploy
命令来推出你的代码更改,而不用担心图像。
当然,您仍然希望将您的图像推送到您的存储库以用于共享目的(与其他开发人员),或者如果您出于某种原因确实需要更改环境配置......但如果您只是想推码看eb deploy
不幸的是,就您的错误细节而言,我无法提供太多帮助。祝你好运!
【讨论】:
以上是关于使用 Docker 在 AWS Elastic Beanstalk 上部署失败的主要内容,如果未能解决你的问题,请参考以下文章
在 AWS Elastic Beanstalk 上使用 Docker 进行 Django 迁移
在 AWS Elastic Beanstalk 上使用 Docker 预编译资产
AWS Elastic beanstalk:使用 docker 镜像时如何设置 ulimit
AWS Elastic Beanstalk Docker 环境变量