如何使用 create-react-app 在 docker-compose.yml 中传递环境变量
How to pass environment variables in docker-compose.yml with create-react-app
我有 nginx 和客户端图像,由 docker-compose.yml 文件加载。
出于某种原因,当应用程序为 运行(我未定义)时,环境变量 (REACT_APP_MAXIMUM_CAMERAS_COUNT) 不可见,我无法弄清楚为什么。
这是我的 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
这是我的 docker-compose.yml 文件:
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
**注意** 因为 docker-compose 从私有注册表中提取图像(没有任何构建),它不能将 "build" 块与 "args" 一起使用(已经尝试过args 并且有效)。
有解决此问题的解决方法吗?
您拥有的 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 进行了冗长的讨论,尽管它可能不是最佳的,但每次启动服务时我都会 'rebuild and then run'。它不是最优的,但它可以满足我的需要。
我有 nginx 和客户端图像,由 docker-compose.yml 文件加载。 出于某种原因,当应用程序为 运行(我未定义)时,环境变量 (REACT_APP_MAXIMUM_CAMERAS_COUNT) 不可见,我无法弄清楚为什么。
这是我的 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
这是我的 docker-compose.yml 文件:
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
**注意** 因为 docker-compose 从私有注册表中提取图像(没有任何构建),它不能将 "build" 块与 "args" 一起使用(已经尝试过args 并且有效)。
有解决此问题的解决方法吗?
您拥有的 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 进行了冗长的讨论,尽管它可能不是最佳的,但每次启动服务时我都会 'rebuild and then run'。它不是最优的,但它可以满足我的需要。