Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js React不读取docker compose环境变量_Node.js_Reactjs_Docker_Docker Compose_Environment Variables - Fatal编程技术网

Node.js React不读取docker compose环境变量

Node.js React不读取docker compose环境变量,node.js,reactjs,docker,docker-compose,environment-variables,Node.js,Reactjs,Docker,Docker Compose,Environment Variables,我想在docker映像构建期间为React设置环境变量。设置docker compose后,React返回未定义的,原因如下: console.log(process.env.REACT_APP_EMAILJS_USERID); 我确认正在运行的容器看到了环境变量: » docker exec -it mszan-portfolio-prod /bin/sh /app # echo $REACT_APP_EMAILJS_USERID foo 命令 文件夹 docker compose.pr

我想在docker映像构建期间为React设置环境变量。设置docker compose后,React返回未定义的
,原因如下:

console.log(process.env.REACT_APP_EMAILJS_USERID);
我确认正在运行的容器看到了环境变量:

» docker exec -it mszan-portfolio-prod /bin/sh
/app # echo $REACT_APP_EMAILJS_USERID
foo

命令 文件夹 docker compose.production.yml

services:
  react:
    container_name: mszan-portfolio-prod
    restart: always
    build:
      context: .
      dockerfile: Dockerfile.production
      args:
        - REACT_APP_EMAILJS_USERID=${REACT_APP_EMAILJS_USERID}
    command: serve -s out -l 3000
    ports:
      - 4050:3000
Dockerfile.production

FROM node:lts-alpine

WORKDIR /app

ENV PATH /app/node_modules/.bin:$PATH

ARG REACT_APP_EMAILJS_USERID

ENV REACT_APP_EMAILJS_USERID $REACT_APP_EMAILJS_USERID

COPY package.json /app/

RUN npm install -g serve

RUN npm install

COPY ./ /app/

RUN npm run build
项目结构
您应该按如下方式更改生成命令:

docker compose-f docker-compose.production.yml build--build arg REACT\u APP\u EMAILJS\u USERID=foo
然后,您只需使用以下工具运行您的服务:

docker compose-f docker-compose.production.yml up

这个问题与NextJS有关,而不是Docker。帮助了我。
services:
  react:
    container_name: mszan-portfolio-prod
    restart: always
    build:
      context: .
      dockerfile: Dockerfile.production
      args:
        - REACT_APP_EMAILJS_USERID=${REACT_APP_EMAILJS_USERID}
    command: serve -s out -l 3000
    ports:
      - 4050:3000
FROM node:lts-alpine

WORKDIR /app

ENV PATH /app/node_modules/.bin:$PATH

ARG REACT_APP_EMAILJS_USERID

ENV REACT_APP_EMAILJS_USERID $REACT_APP_EMAILJS_USERID

COPY package.json /app/

RUN npm install -g serve

RUN npm install

COPY ./ /app/

RUN npm run build
├── Dockerfile.production
├── docker-compose.production.yml
├── node_modules
├── package.json
├── pages
├── public
├── src
└── yarn.lock