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

docker compose with create react应用程序未定义的环境变量

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

    当我在docker-compose.yml文件中声明环境变量时,我遇到了一个问题,但是当我试图读取它们时,我得到了“未定义”。

    我用“create React app”创建了一个React app,然后运行“eject”(但还没有更改任何内容)。此外,我还向docker添加了Ngix。

    然后我创建了一个Dockerfile并将其添加到根目录中:

    FROM node:alpine
    
    WORKDIR '/app'
    
    COPY ./package.json ./
    
    RUN npm i
    
    COPY . .
    
    CMD ["npm", "run", "start"]
    

    然后我创建了docker-compose.yml文件:

    version: '3'
    services:
      nginx:
        restart: always
        build:
          dockerfile: Dockerfile
          context: ./nginx
        ports:
          - '3050:80'
      client:
        build:
          context: ./client
          dockerfile: Dockerfile
          args:
            - MAXIMUM_CAMERAS_COUNT=9
        volumes:
          - /app/node_modules
          - ./client:/app
    

    然后我做了“docker组装——构建”,效果很好。
    但当我在应用程序中的某个地方执行以下操作时:

    console.log('process.env.MAXIMUM_CAMERAS_COUNT:', process.env.MAXIMUM_CAMERAS_COUNT);
    

    已尝试:
    -添加到Dockerfile:

    ARG MAXIMUM_CAMERAS_COUNT
    ENV MAXIMUM_CAMERAS_COUNT $MAXIMUM_CAMERAS_COUNT
    

    在docker-compose.yml中:

      args:
        - MAXIMUM_CAMERAS_COUNT=9
    

    -添加到compose-docker.yml:
    environment:
      - MAXIMUM_CAMERAS_COUNT=9
    

    -添加到compose-docker.yml:
    environment:
      MAXIMUM_CAMERAS_COUNT: 9
    

    还有其他想法吗?

    1 回复  |  直到 5 年前
        1
  •  4
  •   Claire Lin    7 年前

    如本节所述 documentation ,您需要在变量前面加上前缀 REACT_APP_ REACT_APP_MAXIMUM_CAMERAS_COUNT .