如何在使用 create-react-app 时,在 docker-compose.yml 中传递环境变量

3
我可以帮助您翻译以下内容:

我有一个使用docker-compose.yml文件加载的nginx和客户端镜像。由于某种原因,当应用程序运行时,环境变量(REACT_APP_MAXIMUM_CAMERAS_COUNT)不可见(我得到undefined),我无法弄清楚为什么。

这是我的create-react-app Dockerfile:

FROM node:alpine as builder

WORKDIR /app
COPY ./package.json ./
RUN npm i
COPY . .
RUN npm run build

FROM nginx
EXPOSE 3000
COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /app/build /usr/share/nginx/html

version: '3'
services:
  nginx:
    image: <ip_address>:5000/orassayag/osr_streamer_nginx:v1.0
    restart: always
    ports:
      - '3050:80'
  client:
    image: <ip_address>:5000/orassayag/osr_streamer_client:v1.0
    environment:
      - REACT_APP_MAXIMUM_CAMERAS_COUNT=10


1个回答

1
您的docker-compose文件看起来是正确的。尝试在正在运行的容器内获取shell并键入“export”。
docker exec -it code_client_1 sh
/usr/app # export
export HOME='/root'
export HOSTNAME='f4b3fc891ce3'
export NODE_VERSION='10.15.0'
export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
export PORT='80'
export PWD='/usr/app'
export REACT_APP_MAXIMUM_CAMERAS_COUNT='10'
export SHLVL='1'
export TERM='xterm'
export YARN_VERSION='1.12.3'
/usr/app #

我能看到环境变量起作用了。你的问题可能是网站没有设置环境,因此它在运行时实际上不会读取你的环境变量。
这里有一个关于github的长时间讨论,尽管它可能不是最优解,但每次启动服务时我都会自己“重建然后运行”。这不是最优的,但对于我需要的东西来说还是有效的。

谢谢,最终我把 env 文件放在 public 文件夹里,跟其他人一样...我希望将来会有简单的解决方案。 - Or Assayag

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接