Компиляция двух приложений в двух папках с помощью Docker - PullRequest
0 голосов
/ 10 июля 2019

Я имею дело с 2 package.json и из моего одного файла Docker пытаюсь запустить последовательность команд в каждой папке. Я пытаюсь обернуть голову вокруг WORKDIR, так как он ведет себя не так, как я ожидаю.

структура приложения

package.json
   client/
      package.json
Dockerfile

Dockerfile

FROM ...

RUN npm install -g yarn

# run yarn install and build inside the client folder
WORKDIR ./client
RUN yarn install
RUN yarn build

# go back to the parent directory and run yarn install then CMD
WORKDIR ../
COPY . .
RUN yarn install
EXPOSE 6000
CMD ["yarn", "start"]

Как правильно работать с WORKDIR в этом примере? Я продолжаю получать error Couldn't find a package.json file in "/client", что заставляет меня поверить, что я не правильно использую WORKDIR.

1 Ответ

1 голос
/ 10 июля 2019

yarn build требует package.json в текущем каталоге, поэтому необходимо убедиться, что оно есть в папке client.

На самом деле, когда вы делаете WORKDIR ../ & COPY . ., рабочий каталог уже изменился, не в папке client, а в родительском элементе client.

# run yarn install and build inside the client folder
WORKDIR ./client
COPY . .
RUN yarn install
RUN yarn build

Тем временем, убедитесь, что ваш package.json имеет build command:

"scripts": {
    "start": "node ./app.js",
    "build": "ls"
},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...