我正在尝试通过API构建Docker映像。我的上下文位于包含Docker文件以及更多文件和文件夹的TAR文件中。
Dockerfile有几个“ COPY”命令,用于应放置在容器中的文件和文件夹。但这是行不通的,我不知道引用TAR中的这些文件是否正确,以便以后可以复制它们。
TAR的结构大致如下:
然后在Dockerfile中有如下几行:
COPY nginx.conf /etc/nginx/conf.d /
复制./Code / api
这些副本正确吗? api将TAR解释为根路径吗?问题在于它不会给出任何错误,也不会在日志中显示任何内容,只是最终图像留在了结构的中间,我认为它必须将文件从tar复制到容器中。
编辑1:
事实是,它仍然不能很好地运行,但是我注意到通过运行TWICE运行该构建作品,可以注意到这一点。第一次是全心全意,第二次成功地正确完成了该过程。恐怕是某种错误。
我要做的另一件事是用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“
答案 0 :(得分:1)
您不能复制一个存档目录中的文件。
第一个解决方案: 在主机上解压缩内容,然后执行相同的命令。
二维解决方案: 复制到容器,例如COPY / ADD context.tar / tmp 并运行tar -xvf /tmp/context.tar 在您的容器上。 祝你有美好的一天。