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)

让我们在 AWS ECS 上加密 docker nginx

Docker + Gunicorn + Nginx + Django:将非 www 重定向到 AWS Route 53 上的 www

在 AWS Elastic Beanstalk 上运行 Docker 容器 - 502 Bad Gateway nginx/1.6.2

我是不是需要 AWS ECS 中带有 nginx 的 AWS 负载均衡器?

将文件从 docker 容器写入 AWS 上的主机实例