У меня есть приложение 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.
Заранее спасибо.