У меня есть образ Docker, и я могу его запустить:
docker run -it --entrypoint="/bin/bash" gcr.io/docker:tag
Затем я могу создать скрипт следующим образом:
root@86bfac2f6ccc:/# source entrypoint.sh
Скрипт выглядит так:
more entrypoint.sh
#!/bin/bash
. /env.sh
. /root/miniconda3/etc/profile.d/conda.sh
conda activate base
exec "$@"
Которые активируют базовые невр:
(base) root@86bfac2f6ccc:/#
Пока все хорошо, но мне не удалось включить это в Dockerfile
или в качестве параметров для docker run
:
Я пробовал много вещей:
Например:
docker run -it --entrypoint="/bin/bash" gcr.io/docker:tag source entrypoint.sh
/bin/bash: source: No such file or directory
Но скрипт существует и может быть выполнен:
docker run -it --entrypoint="/bin/ls" gcr.io/docker:tag -la
...
-rwxr-xr-x 1 root root 94 Apr 26 20:36 entrypoint.sh
...
Или:
docker run -it --entrypoint="/bin/bash" gcr.io/docker:tag ". /entrypoint.sh"
/bin/bash: . /entrypoint.sh: No such file or directory
Или в файле Docker:
ENTRYPOINT ["source", "/entrypoint.sh"]
Я думаю, у меня проблема, возможно, связана с тем, что source
оценивает скрипт в текущей оболочке.
Любое руководство для достижения того, что я хочу?Это кажется совершенно очевидным, но я не в себе.