Не удается скопировать файл в Docker-контейнер через Spotify Docker Client - PullRequest
0 голосов
/ 06 марта 2019

Я хочу скопировать файл в не работающий контейнер через Docker Client с помощью Spotify -

Файл создается как -

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"

Любые идеи, какскопировать файл в Docker-контейнер через Java-клиент?

1 Ответ

0 голосов
/ 07 марта 2019

Оказалось, что я должен создать целую новую папку, затем один файл в ней и скопировать эту папку.

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")
...