在Dockerfile中运行linux命令引发错误
这是我的Dockerfile内容,它在运行此语句时不断向我抛出错误。知道我做错了什么吗。我只想将ENV VARS转储到容器上的React build文件中在Dockerfile中运行linux命令引发错误,linux,docker,docker-compose,environment-variables,dockerfile,Linux,Docker,Docker Compose,Environment Variables,Dockerfile,这是我的Dockerfile内容,它在运行此语句时不断向我抛出错误。知道我做错了什么吗。我只想将ENV VARS转储到容器上的React build文件中 FROM node:12 WORKDIR /usr/src/app COPY . . RUN printenv | grep REACT_APP_ > client/.env # RUN ["printenv", "|", "grep", "REACT_APP_&qu
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" ]
错误:错误:服务“”无法生成:命令“printenv | grep REACT_APP>client/.env”返回非零代码:1
我花了好几个小时都不走运。感谢您的帮助。因此,有几件事需要考虑:
grep REACT\u APP
查找某些内容。如果没有,grep将返回1,docker映像构建将停止。1是grep找不到任何内容时的正常返回码,因此它不是错误(因此不会打印更多内容)。但是docker构建将其视为错误,因为它不是零,因此构建停止$ docker build -t test .
Sending build context to Docker daemon 2.048kB
Step 1/7 : FROM node:12
---> 28faf336034d
Step 2/7 : WORKDIR /usr/src/app
---> Running in 753293fa6257
Removing intermediate container 753293fa6257
---> 3a04798b1b9f
Step 3/7 : COPY . .
---> 3dd0d465a6e2
Step 4/7 : RUN mkdir client
---> Running in d513df2a0a34
Removing intermediate container d513df2a0a34
---> d46aa5200ae7
Step 5/7 : ENV REACT_APP_1 1
---> Running in af81940a90fb
Removing intermediate container af81940a90fb
---> 6169ad694a4d
Step 6/7 : RUN printenv | grep REACT_APP_ > client/.env
---> Running in 365020eeb2e5
Removing intermediate container 365020eeb2e5
---> b6ef574c48c8
Step 7/7 : RUN cat client/.env
---> Running in a6a69d6ba6c2
REACT_APP_1=1
Removing intermediate container a6a69d6ba6c2
---> 0814306133f0
Successfully built 0814306133f0
Successfully tagged test:latest
在您引用的“it failed”行之前是否有更多错误消息?如果映像中没有
printenv
命令(它不是标准的Unix命令),或者client
目录不存在,则可能会发生这种情况。我只是通过将命令更改为RUN env>client/.env
文件而取得了一些进展,但它是空的。在此步骤中,环境变量不可用或不可读。当我登录并运行相同的命令时,我会看到所有ENV VARS@davidmaze,这并不奇怪:基本节点:12
映像不太可能定义任何特定于React的环境变量,并且在此之前您不会通过ENV
语句来设置它们。(使用docker run-e
或docker Composeenvironment:
选项设置的任何内容都不会被考虑,除非您在Dockerfile中的所有内容完成后启动一个容器。)谢谢<代码>环境反应应用程序11是我的问题。我没有在Dockerfile中设置环境变量
$ docker build -t test .
Sending build context to Docker daemon 2.048kB
Step 1/7 : FROM node:12
---> 28faf336034d
Step 2/7 : WORKDIR /usr/src/app
---> Running in 753293fa6257
Removing intermediate container 753293fa6257
---> 3a04798b1b9f
Step 3/7 : COPY . .
---> 3dd0d465a6e2
Step 4/7 : RUN mkdir client
---> Running in d513df2a0a34
Removing intermediate container d513df2a0a34
---> d46aa5200ae7
Step 5/7 : ENV REACT_APP_1 1
---> Running in af81940a90fb
Removing intermediate container af81940a90fb
---> 6169ad694a4d
Step 6/7 : RUN printenv | grep REACT_APP_ > client/.env
---> Running in 365020eeb2e5
Removing intermediate container 365020eeb2e5
---> b6ef574c48c8
Step 7/7 : RUN cat client/.env
---> Running in a6a69d6ba6c2
REACT_APP_1=1
Removing intermediate container a6a69d6ba6c2
---> 0814306133f0
Successfully built 0814306133f0
Successfully tagged test:latest