Aurelia、Docker、Nginx、AWS Elastic Beanstalk 显示 502 错误网关

Aurelia, Docker, Nginx, AWS Elastic Beanstalk Showing 502 Bad Gateway

我已经通过 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。我正在使用免费套餐作为学习的机会。

非常感谢任何帮助,或链接到一些可能指向正确方向的阅读材料。

与你的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>