我正在为s/w开发准备一个对接映像w/ Ubuntuv18.04。我包括miniconda来管理开发环境,这都是很棒的。I 使用YAML文件创建环境
RUN conda env create --file goDev.yml我还希望在码头启动时激活conda环境。这样做有点棘手,必须首先初始化b/c conda,但是JaegerP提供了一个很好的解决这里方法,包括更新.bashrc (谢谢)。
不幸的是,我还需要将第三方YAML包安装到golang。我必须激活环境来安装软件包,所以它让我回到了JaegerP帮助我克服的最初问题:在初始化环境之前,我无法激活它,而且在对接构建b/c期间,我无法初始化,我必须重新启动shell。
换句话说,它很好地工作:
运行conda env创建-file goDev.yml && rm goDev.yml 源/opt/conda/etc/profile.d/conda.sh“ &回声"conda activate go_dev“>> ${HOME}/.bashrc
启动对接程序时,将激活所需的conda环境,不幸的是,未安装外部YAML包。这不能工作b/c,在初始化和初始化要求重新启动shell之前,无法激活conda环境:
运行conda env创建-file goDev.yml && rm goDev.yml && conda init bash && conda激活go_dev &&获取gopkg.in/yaml.v2 源/opt/conda/etc/profile.d/conda.sh“ &回声"conda activate go_dev“>> ${HOME}/.bashrc
如果不存在该文件,我可以进一步更新.bashrc以安装YAML包:
/root/go/pkg/mod/cache/download/gopkg.in/yaml.v2是否有一个更优雅的解决方案,使我能够安装一个第三方戈朗包在码头建设,而不是检查它每次运行图像?
发布于 2021-10-05 19:44:21
试试Conda Run
conda run函数提供了一种在环境上下文中运行代码的干净方法,而无需手动激活。试着做些像
RUN conda env create --file goDev.yml
&& rm goDev.yml
&& conda run -n go_dev go get gopkg.in/yaml.v2
&& echo '. /opt/conda/etc/profile.d/conda.sh && conda activate go_dev' >> ${HOME}/.bashrc另外,您可能希望结束所有涉及Conda的运行链。
conda clean -qafy保持帮助最小化码头形象层的大小。
https://stackoverflow.com/questions/69443569
复制相似问题