我已经通过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容器是一个简单的Hello World示例,它是通过au new
命令创建的;完全没有花哨。
下面是我的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
。我将免费课程作为学习的机会。
我非常感谢您提供的任何帮助或指向可能指向正确方向的阅读内容的链接。
答案 0 :(得分:3)
它与您的aurelia应用程序无关。您的EXPOSE
中缺少Dockerfile
语句(这是必需的)。您可以像这样更改它。
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>