Dockerfile中使用sudo多行here-doc写入apt配置失败求助
解决Dockerfile中使用tee+Heredoc添加APT配置的问题
在Ubuntu 20.04环境下,要通过Dockerfile向/etc/apt/apt.conf.d/80ssl-exceptions添加指定APT配置,之前的错误写法因破坏Heredoc语法导致报错,正确写法如下:
RUN sudo tee -a /etc/apt/apt.conf.d/80ssl-exceptions > /dev/null <<'EOF' Acquire::https::local_repo.local_host.com::Verify-Peer "false"; EOF
错误原因说明
之前的写法在Heredoc内容和结束标记EOF前加了反斜杠转义换行,这会让/bin/sh无法识别EOF作为Heredoc的结束标记,反而将其视为普通命令,因此抛出/bin/sh: 1: EOF: not found错误。Heredoc的结束标记必须单独占据一行,前后不能有多余的转义字符或空格(除非使用带缩进的Heredoc,此处无需)。
注意事项
- Dockerfile中
RUN指令默认使用/bin/sh而非Bash,需严格遵循POSIX Shell的Heredoc语法 - 确保
EOF单独成一行,无需任何转义或前缀字符
内容的提问来源于stack exchange,提问作者meAbab
相关产品推荐
相关产品推荐

