【发布时间】:2021-01-04 22:06:24
【问题描述】:
这是我的 Dockerfile 内容,它在运行此语句时不断向我抛出错误。知道我做错了什么。我只想将 ENV VARS 转储到一个文件中,以便在容器上构建 React。
FROM node:12
WORKDIR /usr/src/app
COPY . .
RUN printenv | grep REACT_APP_ > client/.env
# RUN ["printenv", "|", "grep", "REACT_APP_", ">", "client/.env"]
RUN npm run setup
RUN npm run build:all
EXPOSE 3005
CMD [ "npm", "run", "start:prod" ]
错误:ERROR: Service '<name>' failed to build: The command 'printenv | grep REACT_APP_ > client/.env' returned a non-zero code: 1
我花了很多时间都没有运气。帮助表示赞赏。
【问题讨论】:
-
您引用的“失败”行之前是否还有更多错误消息?如果
printenv命令不在映像中(它不是标准的 Unix 命令)或client目录不存在,则可能会发生这种情况。 -
我刚刚通过将命令更改为
RUN env > client/.env取得了一些进展,生成了文件但它是空的。看起来 ENV VARS 在此步骤不可用或不可读。当我登录并运行相同的命令时,我会看到所有 ENV VARS @DavidMaze -
这并不奇怪:基本的
node:12图像不太可能定义任何特定于 React 的环境变量,并且在此之前您不会通过ENV语句设置它们。 (您使用docker run -e或Docker Composeenvironment:选项设置的任何内容都不会被考虑,直到您启动容器,在Dockerfile 中的所有内容都完成之后。)
标签: linux docker docker-compose environment-variables dockerfile