Aurelia、Docker、Nginx、AWS Elastic Beanstalk 显示 502 错误网关
Posted
技术标签:
【中文标题】Aurelia、Docker、Nginx、AWS Elastic Beanstalk 显示 502 错误网关【英文标题】:Aurelia, Docker, Nginx, AWS Elastic Beanstalk Showing 502 Bad Gateway 【发布时间】:2019-06-12 02:38:19 【问题描述】:我已通过 AWS ECR 将 Aurelia 应用程序部署到 AWS Elastic Beanstalk,但遇到了一些困难。 docker 容器在本地运行时可以完美运行(请参阅下面的 Dockerfile)。
FROM nginx:1.15.8-alpine
COPY dist /usr/share/nginx/html
部署运行良好,但是当我导航到 AWS 提供的端点 http://docker-tester.***.elasticbeanstalk.com/
时,我得到了 502 Bad Gateway
nginx/1.12.1
。
我无法弄清楚可能是什么问题。有问题的 docker 容器是通过 au new
命令创建的一个简单的 Hello World 示例;一点都不花哨。
下面是我的 Dockerrun.aws.json 文件
"AWSEBDockerrunVersion": "1",
"Image":
"Name": "***.dkr.ecr.eu-central-1.amazonaws.com/tester:latest",
"Update": "true"
,
"Ports": [
"ContainerPort": "8080"
],
"Logging": "/var/log/nginx"
我的 Elastic Beanstalk 配置相当小,EC2 实例类型为t2.micro
。我正在使用免费层作为学习的机会。
非常感谢任何帮助,或指向正确方向的阅读链接。
【问题讨论】:
【参考方案1】:这与您的 aurelia 应用程序无关。您在Dockerfile
中缺少EXPOSE
声明(这是强制性的)。你可以这样改。
FROM nginx:1.15.8-alpine
EXPOSE 80
COPY dist /usr/share/nginx/html
如果你尝试在没有EXPOSE
的情况下运行它,你会得到一个错误
ERROR: ValidationError - The Dockerfile must list ports to expose on the Docker container. Specify at least one port, and then try again.
您应该在将应用程序推送到 ElasticBeanstalk 之前对其进行测试
安装eb cli
(假设你有pip
,如果没有,那么你也需要安装它)
pip install awsebcli --upgrade --user
然后初始化本地存储库以进行部署
eb init -p docker <application-name>
你可以测试一下
eb local run --port <port-number>
【讨论】:
感谢您的回复。我已经更新了Dockerfile
,重新创建了映像并按照您的步骤安装了aws eb cli
。这一切似乎都很好,但是在执行eb local run --port 80
时,我收到错误docker: invalid reference format.
有什么建议吗?
顺便说一句,部署到 Elastic Beanstalk 可以完美运行。非常感谢!
@JPamstra 我已经尝试了你的设置,只更改了存储库,并且它有效。也许ECR有问题。尝试使用一些公共图像(即matusdubrava/ebtest:v1
作为图像名称"Name": "matusdubrava/ebtest:v1"
),看看它是否有效。以上是关于Aurelia、Docker、Nginx、AWS Elastic Beanstalk 显示 502 错误网关的主要内容,如果未能解决你的问题,请参考以下文章
在单个 docker 容器环境中配置 nginx (AWS ElasticBeanstalk)
Docker + Gunicorn + Nginx + Django:将非 www 重定向到 AWS Route 53 上的 www
在 AWS Elastic Beanstalk 上运行 Docker 容器 - 502 Bad Gateway nginx/1.6.2