【问题标题】:Unable to copy local directory into Docker container无法将本地目录复制到 Docker 容器中
【发布时间】:2021-12-28 04:31:18
【问题描述】:

我对 Docker 很陌生。我想将本地目录复制到 Docker 容器,但出现错误

在构建上下文中找不到文件或被 .dockerignore 排除:stat ~/.ssh: 文件不存在

这是复制代码的那行,

COPY ~/.ssh /root/.ssh

我可以确保我有 ~/.ssh 它说不存在

我需要这样做我的应用程序抛出错误

java.io.FileNotFoundException: /root/.ssh/id_rsa (没有这样的文件或 目录)

然后我才意识到我需要将它复制到一个容器中。

在我的应用中,我需要使用 id_rsaknown_hosts 连接到 SFTP 服务器。

请帮忙。非常感谢!

【问题讨论】:

  • 你有.dockerignore 文件吗?
  • @Paolo No 先生....
  • 您通常不希望COPY 将 ssh 私钥之类的东西放入 Docker 镜像:任何获得镜像副本的人都可以轻松地取出私钥并使用它。您在答案中建议的卷安装是一种更好的方法。

标签: docker


【解决方案1】:

据我所知,您只能使用 Dockerfile 所在目录中的文件。

您不能在Dockerfile 本地路径之外的ADDCOPY 文件。

解决方案是将volumedocker rundocker-compose(您已经做过的)一起挂载,或者将目录~/.ssh/ 复制到您的Dockerfile 目录中,然后再次运行docker build

假设我们在您的Dockerfile 所在的/home/saeed/docker/,它具有以下内容:

FROM nginx:alpine
COPY .ssh /root/.ssh

在运行docker build之前,将需要的目录复制到构建目录中:

cp -r ~/.ssh .

然后你就可以正常构建和运行你的镜像了。

【讨论】:

【解决方案2】:

我还没有找到原因,但我通过在 docker-compose 中安装卷找到了解决方法。

- ~/.ssh:/root/.ssh

但如果有人能找到我的COPY问题的解决方案,我愿意学习!

【讨论】:

    猜你喜欢
    • 2020-03-08
    • 2022-10-20
    • 2020-05-24
    • 2019-03-20
    • 2019-10-07
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多