Как я могу использовать аргументы в Dockerfile с рабочими пространствами Yarn (с помощью CMD)?

#node.js #docker #monorepo #yarn-workspaces

#node.js #docker #monorepo #yarn-рабочие пространства

Вопрос:

Я пытаюсь настроить Dockerfile, который будет:

  1. Используйте аргументы в блоке CMD
  2. Работа с рабочими пространствами yarn для monorepo
  3. Используйте этот аргумент, чтобы указать папку в monorepo для «запуска»

В настоящее время при запуске контейнера он просто переходит к установке зависимостей…

Dockerfile находится здесь:

 FROM node:12
ARG location
ENV monorepoFolder=${location}

WORKDIR /workdir

COPY . .

RUN ls
 
RUN yarn --cwd ${location}

RUN yarn --cwd ${location} build

COPY . .

EXPOSE 3000

CMD yarn --cwd ${monorepoFolder} start
  

Структура каталогов проста:

/ содержит все папки / рабочие пространства в monorepo, а также package.json

Как правило, чтобы запустить проект локально, я бы запустил:

 yarn --cwd folder1
yarn --cwd folder1 build
yarn --cwd folder1 start
  

Но, увы, когда я пытаюсь запустить dockerfile, он просто пытается переустановить зависимости.

Ответ №1:

Итак, как оказалось, это работает. Очистил мой кеш / изображения, и он работает так, как ожидалось!

Любые улучшения в Dockerfile, и я весь внимание. Оставим это, поскольку в этой настройке не так много.