Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django “Docker compose教程不工作”;python:can';t打开文件';manage.py“;_Django_Docker Compose - Fatal编程技术网

Django “Docker compose教程不工作”;python:can';t打开文件';manage.py“;

Django “Docker compose教程不工作”;python:can';t打开文件';manage.py“;,django,docker-compose,Django,Docker Compose,我正在运行简单的Docker compose示例,如图所示 以下是Dockerfile: FROM python:2.7 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: d

我正在运行简单的Docker compose示例,如图所示

以下是Dockerfile:

 FROM python:2.7
 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:
   db:
     image: postgres
   web:
     build: .
     command: python manage.py runserver 0.0.0.0:8000
     volumes:
       - .:/code
     ports:
       - "8000:8000"
     depends_on:
       - db
当我尝试使用docker compose启动示例时,它给出了以下信息:

alex@universe:~/projects/testcompose$ docker-compose up
testcompose_db_1 is up-to-date
Recreating testcompose_web_1
Attaching to testcompose_db_1, testcompose_web_1
web_1  | python: can't open file 'manage.py': [Errno 2] No such file or directory
db_1   | The files belonging to this da...

可能教程不是最新的,所以如果您知道答案,请写在这里。

如果您使用的是
docker machine
或docker Toolbox,这可能是因为项目不在
/Users
目录下。在VM中,只有该目录可用作共享文件夹


您可以从配置中删除
卷:
,或将另一个共享文件夹添加到Virtualbox。

正确,已正确生成项目文件结构。 Django始终具有
我的项目文件夹/my site/my site
文件结构

要使用docker compose,只需将以下文件上移到
我的项目文件夹/my site/

Dockerfile
docker-compose.yml
requirements.txt
my project folder/my site/
已包含
manage.py
文件(如果不是这种情况,则说明有问题)

此时,请确保
my project folder/
仅包含
my site/
文件夹,其他什么都没有

一切设置正确后,只需向上移动到
我的项目文件夹/my site/my site
执行命令
docker compose up
它将建造所需的一切。 第二次执行命令
docker compose up
,您就有了它

如果需要,不要忘记检查允许的主机并在
settings.py
文件中添加“0.0.0.0”


就这些。

我带着同样的错误信息来到这里,结果我只是忘记在下面命令的末尾添加点


docker compose运行web django-admin.py startproject composeexample。

在学习docker基础教程时,我也遇到了同样的问题

所以,基本上我在同一个阶段,我也是docker的noob。我的方法是首先使用下面的命令来标识映像目录中的内容,确保您的django项目在该目录中可用

docker run -it container_name sh
之后,当运行docker compose up命令时,将出现此错误

web_1 | python:无法打开文件“/proto/manage.py”:[Errno 2]否 这样的文件或目录

docker run -it container_name sh
因此,docker基本上是在执行Dockerfile中的指令,并在不包含manage.py文件的代码文件夹中执行python manage.py runserver命令

因此,添加这一行,它会将您导航到包含manage.py文件的文件夹

CMD . /code/composeexample/
现在用

docker-compose build
现在运行下面的命令,就可以开始了

docker-compose up

您是否已运行此命令:
docker compose运行web django-admin.py startproject compose示例。
在文件夹中使用
docker compose.yml
?它实际上会在Docker卷中创建
manage.py
和所有与Django相关的文件。是的,我做到了。实际上,问题是在运行此命令后,项目结构不正确。它创建了其他composeexample文件夹,其中包含project和manage.py文件。将所有文件移动一级后,一切都按预期工作。@dhephin感谢您的回答!我没有在Ubuntu上使用docker机器。问题在于在容器内启动Django项目后没有正确的项目结构。