在AWS Elastic Beanstalk上运行许多类似的解析服务器

时间:2017-03-31 19:10:11

标签: amazon-web-services parse-platform amazon-ec2 elastic-beanstalk parse-server

我在AWS Elastic Beanstock上运行了很多类似的解析服务器应用程序。我不需要很多计算能力就可以在AWS上运行大量解析服务器,而无需为每个服务器支付单独的服务器费用。是否有办法在其中一个解析服务器上运行多个应用程序,或者是否有办法在Elastic Beanstock中以某种方式将多个解析服务器放在一个实例上?我可以在Parse GitHub page找到我正在运行的服务器类型的示例。谢谢!

1 个答案:

答案 0 :(得分:0)

我这样做的方法是将每个parse-server应用程序放入自己的docker容器中,然后在一个" beanstalk"上部署一堆不同的容器。每个都在自己的端口上运行。

在某些情况下,我为多个应用程序使用相同的代码库,在某些情况下,代码是不同的。我使用https://www.npmjs.com/package/config来管理所有情况下的配置,但是在代码相同的情况下,我使用env var NODE_APP_INSTANCE为不同的应用程序设置不同的配置值。

简单Dockerfile

FROM node

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY package.json /usr/src/app/
RUN npm install

# Bundle app source
COPY . /usr/src/app

EXPOSE 5000

CMD [ "npm", "start" ]

和一个简单的Dockerrun.aws.json

{
  "AWSEBDockerrunVersion": 2,
  "volumes": [ ],
  "containerDefinitions":
    [
      {
        "name": "app1",
        "image": "xxx.dkr.ecr.us-east-1.amazonaws.com/boo/app1:latest",
        "essential": true,
        "memory": 1536,
        "entryPoint": ["node", "index.js"],
        "portMappings":
          [
            {
              "hostPort": 9091,
              "containerPort": 9091
            }
          ],
        "environment":
        [
          {
            "name": "NODE_ENV",
            "value": "production"
          }
        ]
     },
     {
        "name": "app2",
        "image": "xxx.dkr.ecr.us-east-1.amazonaws.com/boo/app2:latest",
        "essential": true,
        "memory": 512,
        "entryPoint": ["node", "index.js"],
        "portMappings":
          [
            {
              "hostPort": 9092,
              "containerPort": 9092
            }
          ],
        "environment":
        [
          {
            "name": "NODE_ENV",
            "value": "production"
          },
          { "name": "NODE_APP_INSTANCE",
            "value": "app2"
          }
        ]
     },
    ...
}