Как установить правильный путь для копирования файлов с помощью многошаговой сборки Docker? - PullRequest
0 голосов
/ 03 октября 2018

Вот Dockerfile:

# tag block to refering
FROM node:alpine as builder
WORKDIR /home/server
COPY package.json .
RUN npm install
COPY . .
CMD ["npm", "run", "build"]

# on second step use another core image
FROM nginx

# copy files builded on previous step
COPY --from=builder /home/server/build usr/share/nginx/html

Когда образ создается на локальном компьютере с помощью команды «сборка докера».- работает нормально, но когда я пытаюсь поставить проект на Zeit, я получаю следующую ошибку:

Step 8/8 : COPY --from=builder /home/server/build usr/share/nginx/html
> COPY failed: stat   /var/lib/docker/overlay2/a114ae6aae803ceb3e3cffe48fa1694d84d96a08e8b84c4974de299d5fa35543/merged/home/server/build: no such file or directory

Что это может быть?Спасибо.

1 Ответ

0 голосов
/ 03 октября 2018

Ваш первый этап на самом деле не запускает команду сборки , поэтому каталог сборки пуст.Измените строку CMD на строку RUN.

Один совет: каждая отдельная строка последовательности docker build создает собственный промежуточный слой, а каждый слой представляет собой работающее изображение Docker.Вы увидите вывод, подобный

Step 6/8: CMD ["npm", "run", "build"]
 ---> Running in 02071fceb21b
 ---> f52f38b7823e

Это последнее число является действительным идентификатором изображения Docker, и вы можете

docker run --rm -it f52f38b7823e sh

, чтобы увидеть, что на этом изображении.

...