gpt4 book ai didi

linux - 在Dockerfile中运行Linux命令引发错误

转载 作者:行者123 更新时间:2023-12-02 21:33:42 24 4
gpt4 key购买 nike

这是我的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我已经花了很多小时没有运气。帮助表示赞赏。

最佳答案

因此,有几件事情要考虑:

  • 确保客户端目录存在。它本身不出现在node:12图像中
  • 确保env具有允许grep REACT_APP_查找内容的变量。如果没有,则grep将返回1并且docker镜像构建将停止。 grep找不到任何内容时,1是正常的返回码,因此它不是错误(因此不再打印任何内容)。但是docker build将其视为错误,因为它非零,因此构建停止。

  • 另请阅读man grep页面上的退出代码,

    EXIT STATUS Normally the exit status is 0 if a line is selected, 1 ifno lines were selected, and 2 if an error occurred.


    这是我通过的测试(略作修改,仅基于上述考虑):
    FROM node:12
    WORKDIR /usr/src/app
    COPY . .
    RUN mkdir client
    ENV REACT_APP_1 1
    RUN printenv | grep REACT_APP_ > client/.env
    RUN cat client/.env
    我得到的输出是这样的:
    $ 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

    关于linux - 在Dockerfile中运行Linux命令引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63947760/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com