众所周知,Docker镜像制作命令ADD和COPY,不能访问Dockerfile上下文之外的路径,可是我又想要从本机或者局域网主机中复制文件,当然你可以假设HTTP或者FPT服务,然后使用ADD命令。但是我都觉得麻烦,我就想利用局域网中现有的ssh服务来实现这个目的,因此经过一凡研究搜索,终于实现了这个小目标,不多说废话上代码:
COPY --chown=root:root ssh/id* /.ssh/ RUN ls -l /.ssh \ && scp -o 'StrictHostKeyChecking no' -i /.ssh/id_rsa root@192.168.0.113:/home/user1/downloads/LibreOffice/LibreOffice* /tmp \ && rm /.ssh/id*
稍微啰嗦一下,上述scp命令中,通过-o选项传递的 'StrictHostKeyChecking no' 含义为跳过让用户确认接受ssh主机的指纹。