Node.js React不读取docker compose环境变量
我想在docker映像构建期间为React设置环境变量。设置docker compose后,React返回未定义的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
,原因如下:
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