Как указать конечную точку REST в Docker -размерном React CRA - PullRequest
0 голосов
/ 26 марта 2020

У меня есть приложение Create-React (CRA), которое вызывает службу REST; Конечная точка REST изменяется в зависимости от среды.

В процессе разработки я запускаю службу REST локально на http://localhost: 3030 Затем в приложении React я вызываю указанную выше конечную точку URL-адреса.

Когда я создаю образ Docker для производства, я запускаю npm run build в файле Docker. Но тогда http://localhost: 3030 все еще установлено в приложении React. А при развертывании в рабочей среде приложение реагирования ищет конечную точку локального хоста.

Вот мой dockerfile

FROM node:12-slim as BASE
USER node:node
WORKDIR /home/node

COPY --chown=node:node . .

RUN npm install --silent --no-optional \
    && npm run build

EXPOSE 3000

CMD ["npx", "serve", "-s", "build", "-l", "3000"]

Один из способов - проверить NODE_ENV и затем использовать соответствующую конечную точку.

const apiUrl = process.env.NODE_ENV === 'production' 
    ? 'http://xx.xx.xx.xx:3030' : 'http://localhost:3030';

Это не гибко, потому что я все еще жестко программирую конечную точку на этапе сборки docker.

В идеале, я хотел бы иметь возможность определить URL службы для docker контейнер (например, через env var), а затем приложение React использует переданный URL.

Заранее спасибо.

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