Код вашего приложения обычно должен быть в виде Docker . Вы можете запустить несколько контейнеров из одного изображения, возможно, с другим command:
. Например, вы можете написать Dockerfile, например:
FROM node:lts-alpine
WORKDIR /app
COPY package.json yarn.lock ./
RUN yarn install
COPY ./ ./
CMD yarn start
Описав это изображение, вы можете ссылаться на него в docker-compose.yml
, переопределяя command:
для каждой службы:
version: '3'
services:
service1:
build: .
command: 'yarn service1:start'
service2:
build: .
command: 'yarn service2:start'
(Compose, вероятно, попытается создать отдельный образ для каждого сервиса, но из-за кэширования слоя Docker «построение» образа service2
будет выполняться очень быстро и со вторым тегом на том же изображении.)
Эта установка вообще не требует привязки, и если вы помещаете sh встроенные образы в реестр Docker, вы можете запустить их в системе без кода приложения или даже узла.