【问题标题】:React not reading docker-compose environment variable反应不读取 docker-compose 环境变量
【发布时间】:2021-08-15 04:38:24
【问题描述】:

我想在 docker 镜像构建期间为 React 设置环境变量。设置 docker compose 后,React 返回 undefined 作为结果:

console.log(process.env.REACT_APP_EMAILJS_USERID);

我确认正在运行的容器看到了环境变量:

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

命令

REACT_APP_EMAILJS_USERID=foo docker-compose -f docker-compose.production.yml build
REACT_APP_EMAILJS_USERID=foo docker-compose -f docker-compose.production.yml up

文件

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

项目结构

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

【问题讨论】:

  • 此问题与 NextJS 有关,与 Docker 无关。 This answer 帮助了我。

标签: node.js reactjs docker docker-compose environment-variables


【解决方案1】:

你应该像这样改变你的构建命令:

docker-compose -f docker-compose.production.yml build --build-arg REACT_APP_EMAILJS_USERID=foo 

然后您可以简单地使用以下命令运行您的服务:

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

【讨论】:

    猜你喜欢
    • 2020-07-16
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 2021-09-30
    • 2023-01-30
    • 2022-08-11
    • 2019-02-05
    • 1970-01-01
    相关资源
    最近更新 更多