Моя путаница в использовании docker объема на практике - PullRequest
1 голос
/ 16 июня 2020

Я вижу, что некоторые люди определяют такой объем (я помещаю ниже часть Dockefile только для ясного объяснения своего вопроса):

WORKDIR /usr/src/app
COPY . . 
VOLUME . /usr/src/app

Итак, в строке VOLUME . означает текущий каталог, который является WORKDIR определенным выше. Тогда 2-я часть ГРОМКОСТИ будет /usr/src/app. Это конвенция? Для меня это звучит так, будто один и тот же путь определяется как объем дважды. Я неправильно это понимаю?

Другой вопрос, в чем преимущество определения объема /usr/src/app? Есть ли преимущество в том, что при внесении изменений в проект он может быть отражен во всех контейнерах из одного и того же изображения (потому что COPY . . скопировал папку проекта в контейнер)?

1 Ответ

2 голосов
/ 17 июня 2020

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

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

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

...