Docker-compose教程无效“python:无法打开文件'manage.py”

时间:2016-10-18 17:26:56

标签: django docker-compose

我正在运行简单的Docker-compose示例here

这是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...

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

5 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

是的,正确生成了项目文件结构。 Django总是有一个csv_data = "col1,col2\r\n1,1\r\n2,2" sql = """ COPY my_table (col1, col2) FROM STDIN CSV HEADER """ steam = SQL.stream(Repo, sql) Repo.transaction(fn -> Enum.into([csv_data], stream) end) 文件结构。

要使其与docker-compose一起使用,您只需将以下文件移至my-project-folder/my-site/my-site

my-project-folder/my-site/

Dockerfile docker-compose.yml requirements.txt 已经包含my-project-folder/my-site/个文件(如果不是这样的话就会出错)

此时请确保manage.py仅包含 <{1}}文件夹,没有别的。

一切设置正确后,只需向上移动my-project-folder/ 执行命令my-site/ 它将构建所需的一切。 第二次执行命令my-project-folder/my-site/my-site然后就可以了。

别忘了检查允许的主机并添加&#39; 0.0.0.0&#39;如果需要,请在docker-compose up文件上。

全部。

答案 2 :(得分:1)

我以相同的错误消息到达这里,原来我只是忘记在以下命令的末尾添加点.

docker-compose run web django-admin.py startproject composeexample .

答案 3 :(得分:1)

我在学习这个 docker 基础教程时也遇到了同样的问题 https://docs.docker.com/compose/django/

所以,基本上我处于同一阶段,而且我也是 docker 的菜鸟。我的方法是首先我使用以下命令来识别我的图像目录中的内容,确保您的 django 项目在该目录中可用

docker run -it container_name sh

之后,当您运行 docker-compose up 命令时,您将收到此错误

<块引用>

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

因此,基本上 docker 正在执行来自您的 Dockerfile 的指令,并在不包含您的 manage.py 文件的代码文件夹中执行您的 python manage.py runserver 命令。

所以,添加这一行,它将导航到包含 manage.py 文件的文件夹

CMD . /code/composeexample/

现在使用

再次构建您的项目
docker-compose build

现在运行下面的命令,你就可以开始了

docker-compose up

答案 4 :(得分:0)

我正在使用创建 virtualenv 的 pipenv, 我的问题是我忘记使用

RUN pipenv shell

启用 virtualenv。

但是在容器中使用 pipenv shell 会产生一些问题 所以解决方案是使用 --system 选项和 pipenv install 命令

RUN pipenv install --system

这会导致包安装在容器本身上,而不是安装在容器中的 virtualenv 上。