我有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且可以使用) 。
有解决此问题的解决方法吗?
答案 0 :(得分:1)
您拥有的docker-compose文件似乎做对了。尝试在正在运行的容器中放入外壳,然后键入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上进行了冗长的讨论,尽管它可能不是最佳选择,但每次启动服务时,我都会先“重建然后运行”。这不是最佳选择,但可以满足我的需求。