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

JP *_*tra 4 nginx amazon-web-services docker amazon-elastic-beanstalk aurelia

我已经通过 AWS ECR 将 Aurelia 应用程序部署到 AWS Elastic Beanstalk,但遇到了一些困难。docker 容器在本地运行时可以完美运行(Dockerfile 见下文)。

FROM nginx:1.15.8-alpine

COPY dist /usr/share/nginx/html
Run Code Online (Sandbox Code Playgroud)

部署工作得很好,但是当我导航到 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"
}
Run Code Online (Sandbox Code Playgroud)

我的 Elastic Beanstalk 配置很小,EC2 实例类型为t2.micro. 我正在使用免费套餐作为学习的机会。

我非常感谢任何帮助或指向正确方向的某些阅读的链接。

Mat*_*ava 6

它与您的 aurelia 应用程序无关。您EXPOSEDockerfile. 你可以像这样改变它。

FROM nginx:1.15.8-alpine

EXPOSE 80

COPY dist /usr/share/nginx/html
Run Code Online (Sandbox Code Playgroud)

如果你尝试在没有 的情况下运行它EXPOSE,你会得到一个错误

ERROR: ValidationError - The Dockerfile must list ports to expose on the Docker container. Specify at least one port, and then try again.
Run Code Online (Sandbox Code Playgroud)

您应该在将应用程序推送到 ElasticBeanstalk 之前对其进行测试

安装eb cli(假设你有pip,如果没有,那么你也需要安装它)

pip install awsebcli --upgrade --user
Run Code Online (Sandbox Code Playgroud)

然后初始化本地存储库以进行部署

eb init -p docker <application-name>
Run Code Online (Sandbox Code Playgroud)

你可以测试它

eb local run --port <port-number>
Run Code Online (Sandbox Code Playgroud)