0

我正在尝试通过 API 构建 Docker 的映像。我在一个包含 Docker 文件和更多文件和文件夹的 TAR 文件中有我的上下文。

Dockerfile 有几个“COPY”命令,用于应该放置在容器中的文件和文件夹。但这不起作用,我不知道引用 TAR 中的这些文件是否正确,以便以后可以复制它们。

TAR 的结构大致是这样的:

  • 上下文.tar
    • Dockerfile
    • /代码
      • (许多 py 文件)
    • 入口点.sh
    • nginx.conf
    • 要求.txt
    • ...
    • ...

然后在 Dockerfile 中有一些这样的行:

复制 nginx.conf /etc/nginx/conf.d/

复制 ./代码 /api

这些副本是否正确?api将TAR解释为根路径?问题是它没有给出任何错误,也没有在日志中出现任何内容,只是最终图像在构建过程中留下了一半,我认为当它必须将文件从 tar 复制到容器时。

编辑1:

事实是它仍然不能很好地工作,但我注意到通过在运行中启动两次构建工作。第一次是三心二意,第二次成功正确地完成了流程。恐怕是某种BUG。

我做的另一件事是用 ADDS 替换 COPY,虽然我认为它基本上是一样的。

焦油文件:

TAR 文件内容

通过 api 构建请求:

[16:09:05.650][ApiProxy][Info] time="2018-07-17T16:09:05+02:00" msg="proxy << POST /build?t=test%3Alatest&nocache=1&dockerfile=Dockerfile\ n"

4

1 回答 1

1

您不能复制一个存档目录中的文件。

第一种解决方案:解压缩主机上的内容,然后执行相同的命令。

2d 解决方案: 复制到容器,例如 COPY/ADD context.tar /tmp 并在容器上运行 tar -xvf /tmp/context.tar。祝你有美好的一天。

于 2018-07-17T08:41:41.847 回答