docker编写了create react app过程未定义的环境变量

时间:2019-01-03 13:51:43

标签: reactjs docker-compose environment-variables create-react-app

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

我的步骤:

我使用“ create react app”创建了React应用,然后运行“ eject”(但尚未进行任何更改)。另外,我将Ngix添加到了Docker。

然后我创建了一个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-compose up --build”,它可以正常工作。
但是当我在应用程序中的某个地方执行操作时:

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 个答案:

答案 0 :(得分:2)

如本documentation中所述,您需要在变量前加上REACT_APP_,因此您的情况就是REACT_APP_MAXIMUM_CAMERAS_COUNT