【问题标题】:NodeJS Multicontainer Docker on Elastic BeanstalkElastic Beanstalk 上的 NodeJS 多容器 Docker
【发布时间】:2018-06-20 21:57:54
【问题描述】:

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

【问题讨论】:

  • 您是否推送了您的图像并在 JSON 文件中使用它?在我看来,现在休息很好。
  • @vivekyad4v 在使用 Dockerfile 将代码交付到弹性 beanstalk 时,是否需要将代码作为映像推送到注册表?
  • 是的,你必须这样做。您可以将其推送到 ECR 并在 Beanstalk 中使用它。这个https://github.com/vivekyad4v/aws-elasticbeanstalk-multi-container 可能会让您更好地了解它的工作原理。

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


【解决方案1】:

我猜你缺少tagpushdeploy 你的图片。

  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

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

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

【讨论】:

    猜你喜欢
    • 2017-10-14
    • 2017-07-26
    • 2020-05-03
    • 2017-12-26
    • 2017-05-07
    • 2018-12-05
    • 2019-10-09
    • 1970-01-01
    • 2017-07-04
    相关资源
    最近更新 更多