运行 AWS Elastic Beanstalk 上有很多类似的解析服务器
Run a lot of similar parse servers on AWS Elastic Beanstalk
我已经 运行在 AWS Elastic Beanstock 上安装了很多类似的解析服务器应用程序。我不需要大量的计算能力,只是一种在 AWS 上 运行 大量解析服务器的方法,而无需为每个服务器支付单独的服务器费用。是否有办法在一个解析服务器上 运行 多个应用程序,或者是否有办法在 Elastic Beanstock 中以某种方式将多个解析服务器放在一个实例上?在 Parse GitHub page 中可以找到我 运行ning 的那种服务器的示例。谢谢!
我的方法是将每个解析服务器应用程序放入其自己的 docker 容器中,然后将一堆不同的容器部署在一个 "beanstalk" 上,每个 运行他们自己的港口。
在某些情况下,我为多个应用程序使用相同的代码库,而在某些情况下,代码是不同的。我在所有情况下都使用 https://www.npmjs.com/package/config 来管理配置,但在代码相同的情况下,我使用环境变量 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"
}
]
},
...
}
我已经 运行在 AWS Elastic Beanstock 上安装了很多类似的解析服务器应用程序。我不需要大量的计算能力,只是一种在 AWS 上 运行 大量解析服务器的方法,而无需为每个服务器支付单独的服务器费用。是否有办法在一个解析服务器上 运行 多个应用程序,或者是否有办法在 Elastic Beanstock 中以某种方式将多个解析服务器放在一个实例上?在 Parse GitHub page 中可以找到我 运行ning 的那种服务器的示例。谢谢!
我的方法是将每个解析服务器应用程序放入其自己的 docker 容器中,然后将一堆不同的容器部署在一个 "beanstalk" 上,每个 运行他们自己的港口。
在某些情况下,我为多个应用程序使用相同的代码库,而在某些情况下,代码是不同的。我在所有情况下都使用 https://www.npmjs.com/package/config 来管理配置,但在代码相同的情况下,我使用环境变量 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"
}
]
},
...
}