我已经通过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>