遵循 docker-compose 教程时没有创建 Django 应用程序

no django app created when following the docker-compose tutorial

我正在学习 docker-compose 教程,尝试了解如何部署 Django 应用程序:http://docs.docker.com/compose/django/

一切都很顺利(应用程序甚至可以运行!)但是 django 项目文件夹 composeexample 没有在我的本地项目目录中创建。

在 运行 宁:

之后我留下了一个工作 "It Works!" 页面

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

但是我无法继续编辑composeexample/settings.py,正如教程所提示的那样:我的机器上不存在该文件夹(它确实存在于容器中,但它对我没有好处! )

教程有错吗?我没听对吗?

谢谢!

更新:

这就是问题所在,我正在使用 docker-machine 通过远程 docker 实例来 运行 整个过程。使用远程 docker 机器时,关于本地文件夹共享的规则是否不同?

您需要设置一个 docker 文件,以便在您进行 docker 构建时,它将您的本地代码复制到容器中。首先,您需要将文件从容器复制到本地。看这里。或者用你自己的 django app

覆盖目录

Copying files from host to Docker container

示例:

FROM python:2.7
RUN mkdir /code
WORKDIR /code
ADD . /code/

添加。 docker 文件中的 /code/ 实际上会在 docker 图像中挂载您的本地工作目录。 因此,您可以更改工作目录中的代码,并且在 docker 容器中更新相同的代码,因为工作目录安装在同一容器中。

使用docker教程中所示的文件生成图像,并使用相同的图像创建容器。

我遇到了同样的问题,挂载 /code 没有显示。我在 mac (mac os x yos发射 10.10.5)

随后 Docker 安装:https://docs.docker.com/installation/mac/

后面的 Django 部分:https://docs.docker.com/compose/django/

f$ docker-compose run web django-admin.py startproject composeexample .
    ...........
    ... Removing details for brevity ...
    ...........
Removing intermediate container 515d53d20d29
Step 6 : ADD . /code/
 ---> ea2b28ba6ebc
Removing intermediate container 6d6f0f9e2fe0
Successfully built ea2b28ba6ebc

f$ ls
Dockerfile   docker-compose.yml   requirements.txt

有同样的问题,那是因为我更改了Dockerfile中的文件夹名称“/code”,但忘记更改docker-compose.yum文件中的文件夹名称。 所以请确保2个文件中的文件夹名称相同。

实际上容器(和所有文件)已经在 /var/lib/docker/overlay2/.../diff/code/ 中创建,这就是为什么日志提到 "Successfully built ...",但没有复制回触发 cmd 的文件夹。 希望这有帮助。

我刚刚在 docker 上使用 WSL 遇到了这个问题并进行了追踪 - 这是卷安装的问题。基本上要解决这个问题,您需要在挂载的 c 卷上的 WSL 中创建项目目录,而不是在“本机”WSL 目录中。在我的例子中,这意味着在这里创建我的项目目录:/c/Users/seth/proj_dir

您可以在这个优秀的 WSL/Docker 教程中阅读更多关于挂载问题的信息(搜索“创建和修改新的 WSL 配置文件”,然后再次搜索“docker-compose up”:https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawlessly