Создание приложения Create React для производства в Docker Container - PullRequest
0 голосов
/ 28 января 2019

У меня проблема с созданием образа докера для моего приложения CRA.Вот мой Dockerfile, который я использую для производственной среды:

# base image
FROM node:10.13.0
# set working directory
WORKDIR /usr/src/app

# install and cache app dependencies
COPY package.json yarn.lock ./
RUN yarn

COPY . ./
# RUN yarn cache clean 
RUN yarn build

# Stage 2 - the production environment
FROM nginx:latest
# COPY build /usr/share/nginx/html
COPY ./build /var/www
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Процесс docker build успешно выполняется до 8-го шага, где он возвращает следующую ошибку: Step 8/11 : COPY ./build /var/www lstat build: no such file or directory

Fromмое понимание ошибки говорит мне, что папка сборки не была создана в конце концов, поэтому она не может быть перемещена.

1 Ответ

0 голосов
/ 28 января 2019

Dockerfile использует многоступенчатую сборку .8-й шаг - COPY ./build /var/www терпит неудачу, потому что он пытается скопировать каталог build из образа nginx (2-й этап, а не из 1-го этапа, где выполняется yarn build) в /var/www, который не существует.

Чтобы заставить его работать, укажите, что каталог build должен быть скопирован с первого этапа (где запускается yarn build).Для этого внесите следующие изменения:

  1. Назовите базовый этап, изменив первую строку на FROM node:10.13.0 AS base (здесь можно использовать любое имя вместо base).
  2. ИзменитьCOPY ./build /var/www до COPY --from=base ./build /var/www, чтобы сказать, что мы хотим скопировать каталог build с 1-го этапа, а не со 2-го этапа.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...