Windows10上运行Django失败:无法打开文件'manage.py':[Errno 2] 没有那个文件或目录的错误。

3

我刚开始创建了一个 Django 应用,然后使用 Docker 运行它。我的 Docker 镜像如下:

FROM python:3.5
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

我的 docker-compose.yml 文件如下:
version: '2'
services:
  django:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"

当我运行 docker-compose up 命令时,它构建成功了,但在运行 command: python manage.py runserver 0.0.0.0:8000 命令时失败了,提示 python: can't open file 'manage.py': [Errno 2] No such file or directory。这是 Docker for Windows 的一个 bug 吗?因为我只是按照 Docker 的文档 Quickstart: Docker Compose and Django 进行操作。
感谢您的帮助!

你完成了教程中的“创建Django项目”和“连接数据库”部分了吗? - vabada
那么你执行了这行代码吗?docker-compose run web django-admin.py startproject composeexample . - vabada
我再次遵循官方文档,使用 docker-compose run web django-admin.py startproject composeexample . 创建了一个新的 Django 项目。然后我使用 docker-compose up 命令,容器成功运行。但是我在当前目录中找不到 Django 项目文件。此外,我们不能在 Docker 容器中运行已存在的 Django 项目吗? - You Gakukou
你的目录结构是什么样子的? - Railslide
现在我的目录下只有三个文件:D:\Users\zmrenwu\DockerDemo\docker-compose-exampledocker-compose.ymlDockerfilerequirements.txt我不知道新项目结构在哪里。根据官方文档,应该显示在当前目录(.)中。 - You Gakukou
显示剩余2条评论
1个回答

4
我认为你可能错过了这一步骤:docker-compose run web django-admin.py startproject composeexample . 或者使用的目录不可用于正在运行Docker的虚拟机。
如果从Compose文件中删除 volumes: .:/code 后可以正常工作,那么你就知道问题出在卷上。
我相信默认情况下只有用户家目录与VM共享,所以如果你在该树之外创建项目,则无法从卷访问文件。

非常感谢!这解决了我的问题。但是如果我无法将主机上的目录挂载到虚拟机中,那么我该如何在它们之间共享数据呢?是否有任何方法使虚拟机能够访问主机上的文件? - You Gakukou
再次感谢!你救了我的命。根据你的分析,我在Docker官方论坛中搜索答案。解决方法是我们应该在Docker设置中启用主机共享驱动器到Docker容器。 - You Gakukou

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接