从同一节点项目运行2个不同的容器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从同一节点项目运行2个不同的容器相关的知识,希望对你有一定的参考价值。
我有一个节点项目,在根目录上有一个Web服务器和一个服务。
--myNodeProj
--app.js //the web server
--service.js //an update service
在我的package.json中,我有以下内容:
"scripts":
"start": "node app.js",
"service": "node service.js"
,
对于我的DockerFile,我有:
FROM node:8
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm install --only=production
# Bundle app source
COPY . .
EXPOSE 8080
CMD [ "npm", "start" ]
CMD将运行app.js(webserver)。如何使用该服务构建另一个容器?我是否创建了另一个Dockerfile? docker build命令看起来会不同吗?
答案
您可以覆盖命令 - docker run <image> node service.js
https://docs.docker.com/engine/reference/run/#general-form
另一答案
我最终使用docker-compose。您需要使用以下代码创建docker-compose.yml文件:
version: '3'
services:
web:
# will build ./docker/web/Dockerfile
build:
context: .
dockerfile: ./docker/web/Dockerfile
ports:
- "3000:3000"
env_file:
- web.env
service:
# will build ./docker/service/Dockerfile
build:
context: .
dockerfile: ./docker/service/Dockerfile
env_file:
- service.env
这个文件引用了构建容器的2个Dockerfiles:
为了服务
FROM node:8
# Create app directory
WORKDIR /usr/src/service
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm install --only=production
# Bundle app source
COPY . .
CMD [ "node", "service.js" ]
对于网络:
FROM node:8
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm install --only=production
# Bundle app source
COPY . .
#EXPOSE 8080
CMD [ "npm", "start" ]
请注意,我只能进行一次NPM启动。我直接使用node调用服务。
当我想构建容器时,我发出命令:
docker-compose build
以上是关于从同一节点项目运行2个不同的容器的主要内容,如果未能解决你的问题,请参考以下文章