tve*_*rdo 2 django ubuntu docker docker-compose
我正在尝试用于docker-compose up -d部署我的 django 应用程序。问题是 myDockerfile和位于一个目录中,但需要从父目录docker-compose.yml访问 a 。requirements.txt
最小示例:
文件结构:
requirements.txt (file)
docker (directory)
docker/Dockerfile (file)
docker/docker-compose.yml (file)
Run Code Online (Sandbox Code Playgroud)
Dockerfile:
FROM python:3.10-slim
COPY ./../requirements.txt /requirements.txt
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml:
version: '3'
services:
django:
container_name: django_123
build:
context: ./..
dockerfile: ./docker/Dockerfile
expose:
- "8000"
Run Code Online (Sandbox Code Playgroud)
该设置适用于 Windows 10 上的 Docker Desktop 4,但不适用于 Ubuntu 22。
我收到错误:
Step 1/2 : COPY ./../requirements.txt /requirements.txt
COPY failed: forbidden path outside the build context: ../requirements.txt ()
ERROR: Service 'django' failed to build : Build failed
Run Code Online (Sandbox Code Playgroud)
我已经读到我应该从父目录构建图像,但是如果我使用docker build -f ../Dockerfile ..
可能是什么问题呢?为什么它可以在 Windows 上运行而不能在 Ubuntu 上运行?
出于安全原因,您只能从设置为“构建上下文”及以下的目录进行复制。COPY ./../requirements.txt不允许这样做,因为这将从构建上下文之上的目录进行复制。
由于您已将构建上下文设置为父目录,因此您应该能够获取需求文件。您只需将主机文件路径指定为源自构建上下文,如下所示:
COPY ./requirements.txt /requirements.txt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2120 次 |
| 最近记录: |