Аргументы сборки Dockerfile не передаются в sed - PullRequest
0 голосов
/ 09 июля 2020

У меня есть следующий файл Dockerfile.PROD, который создает мое приложение Nodejs, которое затем копируется в Nginx.

Я пытаюсь передать учетные данные, используя аргументы сборки, в Docker, чтобы затем использовать внутри команды sed для создания файла .env для использования Nodejs.

My Dockerfile.PROD

# build environment
FROM node:12.5.0-alpine as build
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
COPY package.json ./
COPY package-lock.json ./
COPY DEFAULT.env ./.env
RUN sed -i "s/access-key/$REACT_APP_ACCESS_KEY_ID/" ./.env
RUN sed -i "s/secret-key/$REACT_APP_SECRET_ACCESS_KEY/" ./.env
RUN npm ci --silent
RUN npm install react-scripts@3.4.1 -g --silent

COPY . ./
RUN npm run build

# production environment
FROM nginx:stable-alpine
COPY --from=build /app/build /usr/share/nginx/html
# new
COPY nginx/nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

My DEFAULT.env

REACT_APP_ACCESS_KEY_ID="access-key"
REACT_APP_SECRET_ACCESS_KEY="secret-key"

Используется моя команда сборки

docker build -f Dockerfile.prod  --build-arg REACT_APP_ACCESS_KEY_ID=ABCDEFGHZXCV --build-arg REACT_APP_SECRET_ACCESS_KEY=ABCDEFGHZXCVhdhjshdjsdf9889 -t test:prod .

Команда сборки сохраняет предупреждение:

Один или несколько аргументов сборки [REACT_APP_ACCESS_KEY_ID REACT_APP_SECRET_ACCESS_KEY] не были использованы.

По какой-то причине команда sed не принимает их, поэтому должен быть синтаксис sed. Я открыт для других возможностей создания файла .env.

1 Ответ

0 голосов
/ 09 июля 2020

Вам необходимо определить аргументы внутри вашего Dockerfile перед его использованием, используя ARG: https://docs.docker.com/engine/reference/builder/#arg

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