我做到这一点是通过将各解析服务器应用到自己的码头工人容器中,然后对自己的端口上的一个单一的“魔豆”的每个运行时部署了一堆不同的容器的方式。
在一些情况下,我使用的多个应用程序,并且在一些代码是不同的相同的代码库。我用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"
}
]
},
...
}
有是如何工作的例子吗?我从来没有使用过Docker。 –
好问题。基础知识是:制作一个容器。放在AWS ECS上。告诉Beanstalk你的容器在哪里。 下面是通过这些三个步骤 如何dockerize一个节点上运行的应用程序三个环节:https://nodejs.org/en/docs/guides/nodejs-docker-webapp/ 穿上ECS的容器:HTTP ://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html 将docker容器部署到elasticbeanstalk:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_ecs html的 –