我有由docker-compose.yml文件加载的nginx和客户端图像。
由于某种原因,当应用程序运行时(我不确定),环境变量(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从私有(private)注册表(没有任何构建)中拉取图像,所以它不能将“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,这里进行了冗长的讨论,尽管它可能不是最佳选择,但每次启动服务时,我都会“重建然后运行”。这不是最佳选择,但可以满足我的需求。

10-01 09:14
查看更多