docker - 持久化在 docker 镜像创建期间创建的 conda env
问题描述
我的 Python 工作区根目录中的.devcontainer文件夹中的Docker 文件如下所示
FROM mcr.microsoft.com/vscode/devcontainers/miniconda:0-3
RUN apt-get update
RUN export DEBIAN_FRONTEND=noninteractive
RUN apt-get -y install --no-install-recommends make
RUN apt-get -y install gcc git-lfs python3-dev build-essential
# Copy environment.yml (if found) to a temp location so we update the environment. Also
# copy "noop.txt" so the COPY instruction does not fail if no environment.yml exists.
COPY environment.yml* .devcontainer/noop.txt /tmp/conda-tmp/
RUN if [ -f "/tmp/conda-tmp/environment.yml" ]; then /opt/conda/bin/conda env update --name base --file /tmp/conda-tmp/environment.yml; fi
RUN rm -rf /tmp/conda-tmp
我希望这会实现的是
- Conda 本身将被更新和
- 将创建我的environment.env文件中的 conda 环境。
事实上,这些都没有发生。
当我让 VSCode 构建 Docker 映像并在生成的容器中重新打开我的工作区时,仅列出了一个 conda 环境(base)并且它尚未更新,即我仍然必须运行命令
conda update --name base conda --channel anaconda
conda env create --file environment.yml
为什么我的 Dockerfile 中的 conda 内容没有持久化到容器中?还是我在 Dockerfile 中所做的事情有问题(我在日志中看不到错误)?
解决方案
推荐阅读
- memory - DMA(PLX PEX 8733)运行一段时间后出现奇怪的src addr是否正常?
- appveyor - 限制 AppVeyor 作业/AppVeyor 作业中程序的总时间(部分)
- javascript - 触发组件之间的过渡
- wordpress - 重力表格 - 将填写的字段发送到谷歌标签管理器
- php - repeatcell 请求未更新 Google 表格中的单元格属性
- java - 使用 OneToMany 的 Spring Boot JPA 自定义查询
- powershell - 如何在 Powershell 中输出正则表达式匹配中的所有字符串?
- c# - Unity 2018:GUI.DrawTexture 不绘制任何东西
- dynamics-crm - 根据案例优先级应用 SLA
- oauth-2.0 - 如何在 Camel(最好是蓝图)的 CXF 端点 (SOAP) 中实现 OAuth 流?