繁体   English   中英

将环境变量复制到Dockerfile中

[英]Copying environment variables into Dockerfile

我正在尝试使用以下行在Dockerfile中创建一个.env文件:

RUN env | grep "REACT_APP" >> .env

我收到此错误:

The command '/bin/sh -c env | grep "REACT_APP" >> .env' returned a non-zero code: 1

有谁知道如何解决这个问题?

编辑:

完整的Dockerfile:

FROM node:11.2-alpine
EXPOSE 5000

ENV NPM_CONFIG_LOGLEVEL warn

RUN ['/bin/sh', '-c', 'env | grep "REACT_APP" >> .env']

RUN npm install -g serve
CMD serve -s build -n

# Separate layer for dependencies, it will speedup build
COPY package.json package.json
RUN npm install

COPY . .

RUN npm run build --production

#TODO: Maybe there is another way to include it to build?
#Legacy redirects via native serve options (https://github.com/zeit/serve-handler#redirects-array)
RUN cp serve.json build/

显然您根本没有定义REACT_APP 作为命令:

RUN env| grep REACT_APP >> .env

如果您尚未定义,将失败并显示以下错误。

The command '/bin/sh -c env| grep REACT_APP >> .env' returned a non-zero code: 1

也不需要写成

RUN ['/bin/sh', '-c', 'env | grep "REACT_APP" >> .env']

此格式RUN env| grep REACT_APP >> .env RUN env| grep REACT_APP >> .env就足够了

RUN命令按原样启动,而不通过外壳启动。 如果您希望使用诸如shell重定向之类的功能,则必须在shell中运行它:

RUN ["/bin/bash", "-c", "env | grep \"REACT_APP\" >> .env"]

bashdashsh选择图像中的外壳。 并非每个图像内部都有BASH。

您可能会收到此错误,因为您可能未设置“ REACT_APP”环境。

您可以按以下方式尝试吗?

ENV REACT_APP test
RUN env | grep "REACT_APP" >> .env

您不能使用bash作为Alphine图像,仅支持sh

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM