Переменные среды: Heroku -> Docker -> Nginx -> React - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть приложение React, созданное с помощью create-react-app, работающее в Nginx, в контейнере Docker на Heroku. Мой файл Docker выглядит следующим образом:

# build environment
FROM node:12.2.0-alpine as build
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
COPY package.json /app/package.json
RUN npm config set unsafe-perm true
RUN npm install --silent
RUN npm install react-scripts@3.0.1 -g --silent
RUN npm audit fix
COPY . /app
RUN npm run build

# production environment
FROM nginx
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=build /app/build /etc/nginx/html
CMD sed -i -e 's/$PORT/'"$PORT"'/g' /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'

Я хочу иметь возможность передавать переменные среды, определенные в Heroku, в приложение React, но я не могу узнать, как и просто добавить их в Heroku приложение и попытка использовать их обычным способом не работает.

1 Ответ

0 голосов
/ 26 февраля 2020

Указание Nginx использовать $PORT (Heroku -> Docker -> Nginx): Ваше регулярное выражение может быть отключено. 's/$PORT/'"$PORT"'/g'. Я не знаю, как выглядит ваш nginx .conf, но вам нужно заменить номер порта по умолчанию новым номером порта. Это может быть, например: "s/8080/$PORT/g" или 's/8080/'$PORT'/g' (идентичное поведение, но разный синтаксис " и ')

Указание приложению React использовать $PORT (Heroku -> Docker - > Реагировать):

В вашей среде сборки Dockerfile:

ENV PORT=$PORT

В вашем javascript коде:

const port =  process.env.PORT || 8080;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...