gpt4 book ai didi

string - 如何使用单个命令在 Dockerfile 中输出多行字符串

转载 作者:行者123 更新时间:2023-11-29 09:34:07 28 4
gpt4 key购买 nike

我想在 Dockerfile 中输出以下文本:

  *****first row *****  
*****second row *****

一种方法是这样做:

cat > Dockerfile <<EOF
FROM alpine:latest
RUN echo ' *****first row ***** ' >> /home/myfile
RUN echo ' *****second row ***** ' >> /home/myfile
ENTRYPOINT cat /home/myfile; sh;
WORKDIR /home
EOF

但是,如果我有 100 行,则需要时间,因为它分别运行每个命令并将其作为一个层。

其他方式是这样的:

FROM alpine:latest
RUN printf ' *****first row ***** \n *****second row ***** \n' >> /home/myfile
ENTRYPOINT cat /home/myfile; sh;
WORKDIR /home

但我不喜欢它,因为它降低了可读性,尤其是当您有 100 行时。

我想知道有没有办法做这样的事情:

FROM alpine:latest
RUN echo ' *****first row *****
*****second row ***** ' >> /home/myfile
ENTRYPOINT cat /home/myfile; sh;
WORKDIR /home

或者有没有办法使用 ARG 命令来做到这一点?

最佳答案

还有一个类似的问题有解决方案: How to write commands with multiple lines in Dockerfile while preserving the new lines?

这个问题的答案更具体的是如何在bash中使用多行字符串,而不是如何使用Docker。

按照此解决方案,您可以完成您想要执行的操作,如下所示:

RUN echo $' \n\
*****first row ***** \n\
*****second row ***** \n\
*****third row ***** ' >> /home/myfile

有关此领先美元符号的更多信息,请点击此处: How does the leading dollar sign affect single quotes in Bash?

请注意,此语法依赖于使用/bin/bash 而不是/bin/sh 的运行命令。

关于string - 如何使用单个命令在 Dockerfile 中输出多行字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54397706/

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