Том монтирования в докере с копированием данных из временного контейнера - PullRequest
0 голосов
/ 09 июня 2018

Рассмотрим сценарий

From package-alpine:latest as package

FROM alpine:latest
COPY --from=package /opt/raw /queue/raw
RUN filter-task /queue/raw --> this will change raw itself

Нужен том здесь, в очереди, чтобы во время работы я мог получить готовое сырье непосредственно на хосте.

Интересно, если это возможно, и если да, какой синтаксис

Пробовал с томом докера, но это фактически делает каталог очереди пустым

docker run -v $HOME/queue:/queue process:latest

1 Ответ

0 голосов
/ 11 июня 2018

То, что вы определяете в своем Dockerfile, выполняется в build-phase (сборка), а не в container-deployment (run) phase.

Вы создаете тома в фазе run, поэтому /queue не может по-прежнемуСуществовать.

Итак, я думаю, вам нужно выполнить фильтр-задачу от Dockerfile RUN command до docker run команды.

Просто попробуйте с этим: Dockerfile

ОТ альпийского: последняя КОПИЯ ./filter-task

Создать образ:

docker build -t process:latest . 

Запустить контейнер с заданием фильтра в качестве точки входа, а не в Dockerfile:

docker run -v /opt/raw:/queue/raw process:latest filter-task /queue/raw

В этот момент, когда контейнер создается, том монтируется, и данные, хранящиеся в контейнере в / queue / raw, будут доступны в / opt / raw на хосте.Ваш том был пуст, потому что если вы смонтировали том, который фактически существует в контейнере, он не смонтирован.

...