代码之家  ›  专栏  ›  技术社区  ›  Or Assayag

如何使用create-react应用程序在docker-compose.yml中传递环境变量

  •  0
  • Or Assayag  · 技术社区  · 6 年前

    我有nginx和客户端图像,由docker-compose.yml文件加载。 由于某些原因,当应用程序运行时,环境变量(REACT\u APP\u max\u camers\u COUNT)不可见(我没有定义),我也不知道为什么。

    这是我的create react应用程序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从私有注册表中提取图像(没有任何构建),所以它不能使用带有“args”的“构建”块(已经用args尝试过了,并且可以正常工作)。
    有什么解决办法吗?
    1 回复  |  直到 4 年前
        1
  •  1
  •   Glagnar    6 年前

    您拥有的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