使用VS Code开发容器时如何正确读取根目录的requirements.txt?
问题描述
目录结构
app-dash\ .devcontainer\ devcontainer.json Dockerfile app.py requirements.txt etc.files
需求与遇到的问题
希望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
尝试使用COPY ../requirements.txt /tmp/pip-tmp/后仍报错找不到requirements.txt。
不想将requirements.txt复制到.devcontainer目录(避免文件更新不同步),也不能仅将其放在.devcontainer目录(Azure Functions部署要求该文件位于根目录),同时不想通过命令行执行构建操作,希望在VS Code中点击「Open Folder in Container」即可完成正确构建。
解决方案
修改.devcontainer/devcontainer.json中的构建上下文配置,将Docker构建上下文指定为项目根目录即可解决:
- 编辑
.devcontainer/devcontainer.json,添加或调整build字段:
{ "build": { "dockerfile": "Dockerfile", "context": ".." } // 保留其他原有配置项 }
- 保持Dockerfile中的
COPY命令不变:
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
配置完成后,VS Code执行「Open Folder in Container」时会以app-dash目录作为Docker构建上下文,此时Dockerfile能正确读取根目录下的requirements.txt,同时满足Azure Functions的部署要求,也无需复制文件导致同步问题。
内容的提问来源于stack exchange,提问作者Dean MacGregor
相关产品推荐
相关产品推荐

