如何在运行 Docker 命令之前激活 conda 环境

BiB*_*iBi 6 docker anaconda conda dockerfile

我正在myEnv使用 Dockerfile在内部创建一个带有conda环境的 docker 映像。

我想,在运行 docker 镜像时

docker run -it myDockerImage
Run Code Online (Sandbox Code Playgroud)

进入环境已经激活的 bash 终端。我知道我们可以将变量和命令传递给,docker run但我希望它自动完成。

我尝试将以下变体添加到 Dockerfile 的末尾,但似乎没有任何效果:

CMD ["source /root/miniconda/bin/activate myEnv"]
CMD [".", "/root/miniconda/bin/activate", "myEnv"]
CMD ["source /root/miniconda/bin/activate myEnv; /bin/bash"]
Run Code Online (Sandbox Code Playgroud)

Ars*_*yev 3

ENTRYPOINT使用Dockerfile 中的执行此操作。

src/entrypoint.sh

#!/bin/bash

# enable conda for this shell
. /opt/conda/etc/profile.d/conda.sh

# activate the environment
conda activate my_environment

# exec the cmd/command in this process, making it pid 1
exec "$@"
Run Code Online (Sandbox Code Playgroud)

src/Dockerfile

# ...
COPY ./entrypoint.sh ./entrypoint.sh
RUN chmod +x ./entrypoint.sh
ENTRYPOINT ["./entrypoint.sh"]
Run Code Online (Sandbox Code Playgroud)