docker compose 与 create React app 过程未定义的环境变量

OrA*_*yag 1 environment-variables reactjs docker-compose create-react-app

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

我的步骤:

我使用“创建反应应用程序”创建了一个反应应用程序,然后运行“弹出”(但尚未更改任何内容)。另外,我将 Ngix 添加到了 docker 中。

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

FROM node:alpine

WORKDIR '/app'

COPY ./package.json ./

RUN npm i

COPY . .

CMD ["npm", "run", "start"]
Run Code Online (Sandbox Code Playgroud)

然后我创建了 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
Run Code Online (Sandbox Code Playgroud)

然后我执行“docker-compose up --build”,它工作正常。
但是当我在应用程序中的某个地方执行操作时:

console.log('process.env.MAXIMUM_CAMERAS_COUNT:', process.env.MAXIMUM_CAMERAS_COUNT);
Run Code Online (Sandbox Code Playgroud)

我得到“未定义”。

已经尝试过:
-添加到 Dockerfile:

ARG MAXIMUM_CAMERAS_COUNT
ENV MAXIMUM_CAMERAS_COUNT $MAXIMUM_CAMERAS_COUNT
Run Code Online (Sandbox Code Playgroud)

在 docker-compose.yml 中:

  args:
    - MAXIMUM_CAMERAS_COUNT=9
Run Code Online (Sandbox Code Playgroud)
- 添加到 compose-docker.yml:
environment:
  - MAXIMUM_CAMERAS_COUNT=9
Run Code Online (Sandbox Code Playgroud)
- 添加到 compose-docker.yml:
environment:
  MAXIMUM_CAMERAS_COUNT: 9
Run Code Online (Sandbox Code Playgroud)

还有其他想法吗?

Cla*_*Lin 5

如本文档中所述,您需要为变量添加前缀REACT_APP_,因此在您的情况下,它将是REACT_APP_MAXIMUM_CAMERAS_COUNT

  • 伟大的。很高兴我能帮忙! (2认同)