Elastic Beanstalk上的NodeJS Multicontainer Docker

时间:2018-01-11 14:25:34

标签: node.js mongodb amazon-web-services elastic-beanstalk

我有一个与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控制台中的任何错误都是可见的,并且处理部署时没有错误。

1 个答案:

答案 0 :(得分:1)

我猜你错过了tagpush& deploy你的形象。

  1. 在您的注册表中标记您的本地图像 -

    $ docker tag node-app:latest a.dkr.ecr.us-east-1.amazonaws.com/node-app:latest

  2. 推送您的图片 -

    $ docker push a.dkr.ecr.us-east-1.amazonaws.com/node-app:latest

  3. 更新JSON以使用标记图像 -

    "essential": true,
    "image": "a.dkr.ecr.us-east-1.amazonaws.com/node-app:latest",
    "memory": 250,
    
  4. 部署到Elasticbeanstalk -

    $ eb deploy $APP_ENV -l ${BUILD_TAG} --timeout 30

  5. 你可以找到参考。 JSON文件 -

    https://github.com/vivekyad4v/aws-elasticbeanstalk-multi-container