путь к докерфайлу? например, я собираю так:
docker build . -f docker/Dockerfile …
И мне приходится в Dockerfile писать:
COPY docker/src /app/src
Получается Dockerfile должен знать где он лежит относительно рабочей директории сборки, а это не очень удобно.
Я, конечно, не уверен, что правильно отвечу, но WORKDIR разве не решает эту проблему? Один раз прописал и пользуешься
WORKDIR это директория внутри контенера
Ты исходишь из 2 параметров build context - это точка в твоей команде, т.е. текущая папка является базовой и от неё строятся все relative пути working directory - это также базовая папка, но уже изнутри твоего билда COPY docker/src /app/src build context влияет на первый параметр - docker/src working directory на второй - /app/src, если бы путь не начинался с /
Благодарю, это я понимаю. Проблема в том, что если я перемещу код приложения и Dockerfile скажем в docker/some/, то мне придется менять путь внутри Dockerfile. Но когда я вызываю docker build . -f docker/some/Dockerfile … по-идее докер уже знает путь к Dockerfile относительно build context. Если его получить то можно писать COPY $PATH/src /app/src. Если $PATH будет содержкать docker/some путь
Встроенной переменной для этого не знаю Могу предложить --build-arg
> по идее докер уже знает путь к Dockerfile относительно build context Не знает. Контекстом может быть архив или вообще stdin. Dockerfile может быть абсолютным путем или даже URL, он вообще не обязан находится внутри контекста
Обсуждают сегодня