Я пытаюсь создать простой контейнер, который позволит пользователю передавать путь к файлу каталога к исполняемому файлу, который должен существовать на хост-компьютере.
Я хочу, чтобы это было несколько гибким, чтобы, если пользователь не указал путь к каталогу, он будет использовать значение по умолчанию. Из того, что я исследовал, мне нужно использовать ARG и, возможно, -e флаг во время выполнения. Давайте рассмотрим пример с этим простым Dockerfile.
FROM ubuntu:latest
#Assign the default value
ARG DIRHOME=/opt/docker/q
#if -e has not been set the use default DIRHOME
ADD $DIRHOME /q
Dockerfile находится в папке / opt / docker, куда я буду запускать
docker build --build-arg DIRHOME=/q .
Это все работает успешно, но, как вы можете видеть, я всегда использую значение по умолчанию. Есть ли у пользователя способ передать свой путь к исполняемому файлу q во время выполнения, чтобы перезаписать переменную DIRHOME? Что-то вроде ниже
docker run -e "QHOME=/user1/lib/q" <container id>
Я думаю, что проблема заключается в том, что это связано с контекстом сборки, поэтому, если я запускаю свой Dockerfile внутри / opt / docker, он воспринимает это как свой корень и не может найти путь / user1 / lib / q. Есть потенциальные обходные пути?