在Dockerfile中使用sudo将heredoc多行



我们在sources.list中使用本地repo,对于20.04,需要添加apt.conf.dAcquire::https::local_repo.local_host.com::Verify-Peer "false";

与Bash一起工作,就像使用一样

sudo tee -a /etc/apt/apt.conf.d/80ssl-exceptions > /dev/null <<'EOF'
Acquire::https::local_repo.local_host.com::Verify-Peer "false";
EOF

但我找不到Dockerfile的解决方案。我试过用不同的转义符/换行符等等,但总是不成功。例如,

sudo tee -a /etc/apt/apt.conf.d/80ssl-exceptions > /dev/null <<'EOF' 
Acquire::https::local_repo.local_host.com::Verify-Peer "false"; 
EOF

结果-/bin/sh: 1: EOF: not found

注意,catecho不是一个选项,在脚本中添加这3行也是不可取的。

如果只有一行要追加,那么我不会使用heredoc。使用echo:更简单

RUN echo 'Acquire::https::local_repo.local_host.com::Verify-Peer "false";' | 
sudo tee -a /etc/apt/apt.conf.d/80ssl-exceptions > /dev/null

cat:

RUN cat <<< 'Acquire::https::local_repo.local_host.com::Verify-Peer "false";' | 
sudo tee -a /etc/apt/apt.conf.d/80ssl-exceptions > /dev/null

或者将字符串直接发送到sudo tee:

RUN sudo tee -a /etc/apt/apt.conf.d/80ssl-exceptions > /dev/null 
<<< 'Acquire::https::local_repo.local_host.com::Verify-Peer "false";'

请注意,后两个选项可能还需要设置SHELL /bin/bash,因为<<<是普通sh中不可用的bash-ism。

相关内容

  • 没有找到相关文章

最新更新