使用 vsc 生成开发容器并复制requirements.txt

Dea*_*gor 5 docker visual-studio-code vscode-remote

我的目录结构是这样的:

app-dash\
  .devcontainer\
     devcontainer.json
     Dockerfile
  app.py
  requirements.txt
  etc.files
Run Code Online (Sandbox Code Playgroud)

我想在我的 Dockerfile 中包含这些行

COPY requirements.txt /tmp/pip-tmp/
RUN pip3 --disable-pip-version-check --no-cache-dir install -r /tmp/pip-tmp/requirements.txt \
  && rm -rf /tmp/pip-tmp
Run Code Online (Sandbox Code Playgroud)

使用这一行也不起作用(具有相同的错误)...

COPY ../requirements.txt /tmp/pip-tmp/
Run Code Online (Sandbox Code Playgroud)

我也有,但在构建过程中它出错了,因为它找不到requirements.txt。如果我将requirements.txt复制到.devcontainer目录,它就会工作。当然,我不想这样做,因为如果我更新了一个需求而忘记了另一个需求,那么以后就会出现问题。我不想只将requirements.txt放在.devcontainer中,因为我想将其托管在azure函数中,该函数期望requirements.txt位于根文件夹中。我也不想从命令行运行构建。

我该如何设置它,以便当我Open Folder in Container从 vsc 单击时它就会执行此操作?

小智 1

因为如果您放入requirements.txtinside .devcontainer/,它就可以工作,所以问题在于您在 COPY 指令中使用的路径。通过这样做,您可以指示 Dockerfile在其工作目录中COPY requirements.txt ...搜索.requirements.txt.devcontainer/

通过使用,您将指示它在的父文件夹中COPY ../requirements.txt ...搜索,该文件夹是实际所在的位置。requirements.txt.devcontainer/app-dash/requirements.txt

因此只需将 COPY 指令替换为:

    COPY ../requirements.txt /tmp/pip-tmp/
Run Code Online (Sandbox Code Playgroud)