我有一个 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
...
Or:
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
在当前 shell 中评估脚本。
有什么指导可以实现我想要的吗?这看起来很明显,但我不知道。