我想通过Spotify通过Docker Client将文件复制到未运行的容器中 -
文件创建如下 -
File.createTempFile("olb-", "-temp").deleteOnExit().writeText("some text")
当我尝试:
client.copyToContainer(inputFileProvider.createFile(task.dataToInsert).toPath(), containerId, "/app/asd.json")
我明白了:
Either container 1adbf9c1ee511272bec78a46be08bf9299c317b11cdb176eed986640ac86a38c or path /app/my_json.json not found.
好吧,好吧 - 我用RUN touch /app/my_json.json
构建图像时创建这个文件下一次运行:
client.copyToContainer(inputFileProvider.createFile(task.dataToInsert).toPath(), containerId, "/app/my_json.json")
导致
{"message":"extraction point is not a directory"}
好的......我试过目录
copyToContainer(inputFileProvider.createFile(task.dataToInsert).toPath(), containerId, "/app/")
结果:
{"message":"Error processing tar file(exit status 1): cannot overwrite directory \"/\" with non-directory \"/\""}
"/app"
也是如此
有关如何通过Java客户端将文件复制到docker容器的任何想法?
事实证明,我必须创建全新的文件夹,然后在其中单个文件并复制该文件夹。
val dir = Files.createTempDirectory("tem-folder-")
Files.createFile(dir.resolve("filename")).toFile().writeText("data to write")
val toBeCopied = dir.toFile()
cliend.copyToContainer(toBeCopied.toPath(), "containerId", "targetPath")