Копирование переменных среды в Dockerfile - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь создать .env-файл в Dockerfile, используя следующую строку:

RUN env | grep "REACT_APP" >> .env

Я получаю эту ошибку:

The command '/bin/sh -c env | grep "REACT_APP" >> .env' returned a non-zero code: 1

Кто-нибудь знает, какчтобы решить эту проблему?

РЕДАКТИРОВАТЬ:

Полный Dockerfile:

FROM node:11.2-alpine
EXPOSE 5000

ENV NPM_CONFIG_LOGLEVEL warn

RUN ['/bin/sh', '-c', 'env | grep "REACT_APP" >> .env']

RUN npm install -g serve
CMD serve -s build -n

# Separate layer for dependencies, it will speedup build
COPY package.json package.json
RUN npm install

COPY . .

RUN npm run build --production

#TODO: Maybe there is another way to include it to build?
#Legacy redirects via native serve options (https://github.com/zeit/serve-handler#redirects-array)
RUN cp serve.json build/

Ответы [ 3 ]

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

По-видимому, вы не определили REACT_APP вообще.Как команда:

RUN env| grep REACT_APP >> .env

Сбой со следующей ошибкой, если она еще не определена.

The command '/bin/sh -c env| grep REACT_APP >> .env' returned a non-zero code: 1

Также нет необходимости записывать ее как

RUN ['/bin/sh', '-c', 'env | grep "REACT_APP" >> .env']

Этот формат RUN env| grep REACT_APP >> .env будет достаточным

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

Возможно, вы получаете сообщение об ошибке, потому что у вас может не быть набора REAV_APP.

Можете ли вы попробовать это следующим образом,

ENV REACT_APP test
RUN env | grep "REACT_APP" >> .env

Вы не можете использовать bash в качестве alphine imageтолько поддержка ш

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

Команда RUN запускается «как есть», а не через оболочку.Если вы хотите использовать такие функции, как перенаправление оболочки, вы должны запустить его в оболочке:

RUN ["/bin/bash", "-c", "env | grep \"REACT_APP\" >> .env"]

bash, dash, sh - выберите оболочку, которая у вас есть в вашем изображении.Не каждое изображение имеет BASH внутри.

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