несколько env-файлов, выбирая какой из них на docker - создать приложение реакции - PullRequest
0 голосов
/ 21 января 2020

Я создаю реагирующее приложение, используя cra, поэтому проблема в том, что у приложения просто есть код на стороне клиента, что означает отсутствие nodejs части.

У меня есть две разные среды: одна - разработка, а другая - это производство, как говорит cra, есть порядок предпочтений .env .env.development .env.production

, поэтому, если в репозитории есть файл .env.production, он возьмет его и использует этот конфиг на основе скрипт, который я даю, если я использую npm запустить сборку, он будет использовать .env.production, а если я использую npm start, он будет использовать .env.development, если файл существует

Так что я могу добавьте .env, .env.development, .env.production, но когда я создаю образ в docker, я могу дать только одну команду: либо npm start, либо npm run build. Так как мне решить эту проблему

Любая помощь приветствуется

1 Ответ

0 голосов
/ 21 января 2020

Установка локальной среды разработки; обычно ваша единственная зависимость от хоста - это сам узел. Используйте файл .env.development там, через что-то вроде сервера разработки Webpack, с командой типа yarn start.

Используйте Docker главным образом в качестве механизма развертывания. Ваш Dockerfile может создать ваше приложение, используя файл .env.production, а затем скопировать его в нечто вроде Nginx контейнера, который вообще не нуждается в Node. Он должен следовать шаблону в документе CRA Создание производственной сборки документов. В общем,

FROM node:lts AS build
WORKDIR /app
COPY package.json package.lock .
RUN npm install
COPY . .
ENV NODE_ENV=production
RUN npm run build

FROM nginx
COPY --from=build /app/build /usr/share/nginx/html
# Base image provides default EXPOSE, CMD

Этот шаблон позволяет обойти все трудности, связанные с попыткой заставить Docker действовать как локальная среда разработки (права доступа к файловой системе, node_modules не обновляются, живая перезагрузка не работает, ... ) просто используя реальную локальную среду разработки; но во время развертывания вы получаете преимущества автономного Docker образа без зависимостей от хоста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...