Как скопировать файлы из образа docker - dockerfile cmd - PullRequest
4 голосов
/ 04 августа 2020

Во время сборки я хочу скопировать файл из образа (из папки /opt/myApp/myFile.xml) в папку моего хоста /opt/temp В Dockerfile я использую --mount следующим образом, пытаясь подключиться к моя локальная тестовая папка:

RUN --mount=target=/opt/temp,type=bind,source=test cp /opt/myApp/myFile.xml /opt/temp

Я успешно создаю образ, но локальная папка test пуста. Какие-нибудь идеи?

1 Ответ

3 голосов
/ 04 августа 2020

Копирование файлов из образа на хост во время сборки не поддерживается. Этого можно легко добиться во время выполнения с использованием томов. , что ввело поддержку этого вида деятельности.

Вот простой пример, вдохновленный официальной документацией:

Dockerfile

FROM alpine AS stage-a
RUN mkdir -p /opt/temp/
RUN touch /opt/temp/file-created-at-build-time
RUN echo "Content added at build-time" > /opt/temp/file-created-at-build-time

FROM scratch as custom-exporter
COPY --from=stage-a /opt/temp/file-created-at-build-time .

Чтобы это работало, вам нужно запустить команду сборки используя следующие аргументы:

DOCKER_BUILDKIT=1 docker build --output out .

Это создаст на вашем хосте, помимо Dockerfile, каталог out с нужным вам файлом:

.
├── Dockerfile
└── out
    └── file-created-at-build-time
cat out/file-created-at-build-time 
Content added at build-time

...