首页 > 解决方案 > 持久化在 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

我希望这会实现的是

  1. Conda 本身将被更新和
  2. 将创建我的environment.env文件中的 conda 环境。

事实上,这些都没有发生。

当我让 VSCode 构建 Docker 映像并在生成的容器中重新打开我的工作区时,仅列出了一个 conda 环境(base)并且它尚未更新,即我仍然必须运行命令

conda update --name base conda --channel anaconda
conda env create --file environment.yml

为什么我的 Dockerfile 中的 conda 内容没有持久化到容器中?还是我在 Dockerfile 中所做的事情有问题(我在日志中看不到错误)?

标签: dockerdockerfilecondavscode-remote

解决方案


推荐阅读