谁能告诉我如何为AWS EB中的这个多容器docker微服务应用程序创建dockerrun.aws.json?

问题描述 投票:0回答:1

我有两个微服务图像,一个Go Rest API和一个React前端,它们都在我的AWS ECR中。我将使用Elastic Beanstalk。现在因为我相信它们在同一台机器上所以我配置了React应用程序以从localhost:8080上的API获取数据。以下是两者的Dockerfiles。他们在我的开发环境中工作,所以我把它们推到了我的ECR。

Dockerfile为Golang REST API

FROM golang
ADD . /go/src/vsts/project/gorestapi
WORKDIR /go/src/vsts/project/gorestapi
RUN go get github.com/golang/dep/cmd/dep
RUN dep ensure
RUN go install .
ENTRYPOINT /go/bin/gorestapi
EXPOSE 8080

React Frontend App的Dockerfile

FROM node:8.4.0-alpine
WORKDIR /usr/src/app
ENV NPM_CONFIG_LOGLEVEL warn
RUN npm i -g serve
CMD serve -s build/app -p 3000
EXPOSE 3000
COPY package.json package-lock.json ./
RUN npm install
COPY . .
RUN npm run build

我不知道是否还需要声明卷,或者挂载点,我所知道的是我需要将dockerrun json的版本放到v2以及容器定义中的名称,图像和端口映射。大多数样本都很容易混淆,因为它们都没有显示来自私人仓库的应用程序,并且它们具有那些我真不了解如何使用的卷,挂载点,链接。我尝试了下面的那个,但它没有用

编辑:(我改变了Dockerrun.aws.json,期望Volume Host SourcePath成为我机器中的路径。如果我错了,请更正)

{
  "AWSEBDockerrunVersion": 2,
  "volumes": [
    {
      "name": "webapp",
      "host": {
        "sourcePath": "/webapp"
      }
    },
    {
      "name": "gorestapi",
      "host": {
        "sourcePath": "/gorestapi"
      }
    }
  ],
  "containerDefinitions": [
    {
      "name": "gorestapi",
      "image": "<acctId>.dkr.ecr.us-east-1.amazonaws.com/dev/gorestapi:latest",
      "essential": true,
      "memory": 512,
      "portMappings": [
        {
          "hostPort": 8080,
          "containerPort": 8080
        }
      ],
      "links": [
        "webapp"
      ],
      "mountPoints": [
        {
          "sourceVolume": "gorestapi",
          "containerPath": "/go/src/vsts/project/gorestapi"
        }
      ]
    },
    {
      "name": "webapp",
      "image": "<acctId>.dkr.ecr.us-east-1.amazonaws.com/dev/webapp:latest",
      "essential": true,
      "memory": 256,
      "portMappings": [
        {
          "hostPort": 3000,
          "containerPort": 3000
        }
      ],
      "mountPoints": [
        {
          "sourceVolume": "webapp",
          "containerPath": "/usr/src/app"
        }
      ]
    }
  ]
}

我是否为路径指定了正确的值?

amazon-web-services amazon-ec2 elastic-beanstalk
1个回答
0
投票

是的,如果要使用它们,仍需要定义卷及其挂载点。在我看来,这是一个更全面的指南,关于建立一个多容器环境,直接从官方文档加上他们有一个私有存储库部分。希望这有助于>> https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_v2config.html#create_deploy_docker_v2config_dockerrun另外,考虑查看EC2容器服务(ECS),但是,Elastic Beanstalk确实在后台使用它来运行多容器环境,但可以更容易直接在ECS上运行它们。

© www.soinside.com 2019 - 2024. All rights reserved.