Как скопировать файлы с хоста в новый образ docker с помощью файла dockerfile, который является общим томом в контейнере? - PullRequest
0 голосов
/ 21 апреля 2020

Как я могу использовать dockerfile для копирования файлов с моего хоста на образ во время создания и сделать их доступными для хост-машины при создании контейнера? Я потерян между 1) VOLUME = [..] в Dockerfile 2) - том в команде запуска 3) docker том создания

Я попытался создать файл Docker для копирования файлов в образ. хотя, если я запускаю контейнер с параметром -v, цель в контейнере, похоже, очищается ?? пример:

FROM node:latest
WORKDIR /usr/src/myapp
COPY package*.json ./
RUN npm install
COPY index.js /usr/src/myapp/index.js
EXPOSE 8080
CMD [ "node", "/usr/src/myapp/index.js" ]

Прекрасно работает без тома

docker run -p 8080:8080 --name Test test:latest

Однако с томом кажется, что целевой каталог в контейнере очищен (ошибка: не удается найти модуль '/ usr / src / myapp / index. js ')

docker run -p 8080:8080 -v /mynasvolume1/test:/usr/src/myapp --name Test test:latest

Я знаю, что моя альтернатива - создать именованный том на хосте и включить его как VOLUME в Dockerfile. Это не мое предпочтение, поскольку оно не позволяет мне выбрать расположение тома на моем хост-компьютере (Synology NAS не дает мне решения изменить местоположение по умолчанию с / volume1 / @ docker / volume на местоположение, которым я могу поделиться или смонтировать)

1 Ответ

0 голосов
/ 21 апреля 2020

Да, это кажется очищенным, потому что при монтировании /mynasvolume1/test к /usr/src/myapp будут отображаться только файлы с /mynasvolume1/test и переопределятся файлы, которые вы COPY редактировали в вас Dockerfile. Неясно, чего вы пытаетесь достичь, но попробуйте подключиться к указанному каталогу c, например: /mynasvolume1/test:/usr/src/myapp/test

...