Запуск 2 разных контейнеров из одного проекта узла - PullRequest
1 голос
/ 19 марта 2019

У меня есть проект узла, у которого есть веб-сервер и служба в корне.

--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 (веб-сервер).Как мне построить еще один контейнер с сервисом?Создать другой Dockerfile?Будет ли команда сборки docker выглядеть иначе?

Ответы [ 2 ]

1 голос
/ 19 марта 2019

Вы можете переопределить команду - docker run <image> node service.js

https://docs.docker.com/engine/reference/run/#general-form

0 голосов
/ 22 апреля 2019

В итоге я использовал 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 файла Docker, которые создают контейнеры:

Для обслуживания

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. Я вызываю службу напрямую, используя узел.

Когда я хочу собрать контейнеры, я запускаю команду:

docker-compose build
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...