Ven*_*nth 54 docker dockerfile
我想在Dockerfile中编写以下RUN命令.但是,docker并没有保留新的线条.
RUN echo "[repo] \
name = YUM Repository \
baseurl = https://example.com/packages/ \
enabled = 1 \
gpgcheck = 0" > /etc/yum.repos.d/Repo.repoxyz
Run Code Online (Sandbox Code Playgroud)
我知道\在每一行的末尾都会逃脱新行.但是,有什么方法可以写多行来保留新行吗?
Dan*_*nai 89
启动命令$',结束'并使用\n\换行符,如下所示:
RUN echo $'[repo] \n\
name = YUM Repository \n\
baseurl = https://example.com/packages/ \n\
enabled = 1 \n\
gpgcheck = 0' > /etc/yum.repos.d/Repo.repoxyz
Run Code Online (Sandbox Code Playgroud)
CTo*_*dea 34
我用过printf.使用"\n"在一行中写入所有文本.
执行:
RUN printf 'example \ntext \nhere' >> example.txt
Run Code Online (Sandbox Code Playgroud)
刀片:
example
text
here
Run Code Online (Sandbox Code Playgroud)
在example.txt中
rya*_*yan 22
从 Docker 18.09 和Dockerfile 语法 1.4开始,Dockerfile 原生支持heredocs(即您在这里寻找的内容)!
DOCKER_BUILDKIT=1.# syntax=docker/dockerfile:1.4
Run Code Online (Sandbox Code Playgroud)
或按照文档中的建议
# syntax=docker/dockerfile:1
Run Code Online (Sandbox Code Playgroud)
COPY <<EOF /etc/yum.repos.d/Repo.repoxyz
[repo]
name = YUM Repository
baseurl = https://example.com/packages/
enabled = 1
gpgcheck = 0
EOF
Run Code Online (Sandbox Code Playgroud)
您还可以使用它在单个块中运行多个 bash 命令RUN等。更多详细信息:Docker 博客文章、Dockerfile 语法文档。
Pau*_*lgo 10
您可以使用:
RUN echo -e "\
[repo] \n\
name = YUM Repository \n\
baseurl = https://example.com/packages/ \n\
enabled = 1 \n\
gpgcheck = 0\
" > /etc/yum.repos.d/Repo.repoxyz
Run Code Online (Sandbox Code Playgroud)
这样,您将可以快速查看文件内容。您只需要知道,您需要以每行结尾\并\n在需要时插入。
我最终使用了上面列出的示例的组合,因为新行\n不适用于echo.
RUN printf 'example \n\
text \n\
here' >> example.txt
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,它产生以下结果:
example
text
here
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38639 次 |
| 最近记录: |