首页 > 解决方案 > 如何在运行 Docker 命令之前激活 conda 环境

问题描述

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

我想在运行 docker 映像时使用

docker run -it myDockerImage

进入已经激活环境的 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"]

标签: dockeranacondadockerfileconda

解决方案


ENTRYPOINT在你的 Dockerfile 中执行此操作。

src/入口点.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 "$@"

src/Dockerfile

# ...
COPY ./entrypoint.sh ./entrypoint.sh
RUN chmod +x ./entrypoint.sh
ENTRYPOINT ["./entrypoint.sh"]

推荐阅读