我有一个与mongodb通信的NodeJS应用程序。 这两个服务都应该在“多容器”Docker容器中的Elastic Beanstalk上运行。 它接缝mongodb服务运行并工作,但我的NodeJS服务无法启动。它生成空日志文件,服务器不可用。
我正在通过EB CLI部署容器。通过eb local run
在本地启动所有工作正常,但在实时环境中,nodeJS部分无法启动。
这是我的Dockerrun.aws.json:
{
"AWSEBDockerrunVersion": 2,
"volumes": [
{
"name": "node",
"host": {
"sourcePath": "/var/app/current/node"
}
}
],
"containerDefinitions": [
{
"environment": [
{
"name": "MONGODB_DATABASE",
"value": "chat_service"
}
],
"image": "mongo",
"memory": 128,
"name": "mongo"
},
{
"essential": true,
"image": "node",
"memory": 250,
"name": "node",
"mountPoints": [
{
"sourceVolume": "node",
"containerPath": "/usr/src/app",
"sourcePath": "",
"readOnly": true
}
],
"portMappings": [
{
"hostPort": 80,
"containerPort": 3000
}
]
}
]
}
我的Dockerfile:
FROM node:carbon
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "node", "index.js" ]
我对Docker很新,所以也许我忘记了什么。既不是CLI也不是AWS EB控制台中的任何错误都是可见的,并且处理部署时没有错误。
答案 0 :(得分:1)
我猜你错过了tag
和push
& deploy
你的形象。
在您的注册表中标记您的本地图像 -
$ docker tag node-app:latest a.dkr.ecr.us-east-1.amazonaws.com/node-app:latest
推送您的图片 -
$ docker push a.dkr.ecr.us-east-1.amazonaws.com/node-app:latest
更新JSON以使用标记图像 -
"essential": true,
"image": "a.dkr.ecr.us-east-1.amazonaws.com/node-app:latest",
"memory": 250,
部署到Elasticbeanstalk -
$ eb deploy $APP_ENV -l ${BUILD_TAG} --timeout 30
你可以找到参考。 JSON文件 -
https://github.com/vivekyad4v/aws-elasticbeanstalk-multi-container