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

时间:2015-07-22 14:12:00

标签: python django docker docker-compose docker-machine

我正在关注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,正如教程所暗示的那样:我的机器上不存在该文件夹(它确实存在于容器中,但对我来说没有用!)< / p>

教程错了吗?我没有遵循它吗?

谢谢!

更新:

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

5 个答案:

答案 0 :(得分:1)

您需要设置一个dockerfile,以便在进行docker构建时,将本地代码复制到容器中。首先,您需要将文件从容器复制到本地。在这看看。或者只是使用您自己的django应用程序覆盖目录

Copying files from host to Docker container

示例:

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

答案 1 :(得分:0)

ADD。 / code / in docker文件实际上将本地工作目录挂载在docker镜像中。 因此,您可以对工作目录中的代码进行更改,并且当工作目录安装在工作目录中时,它将在docker容器内更新。

使用如教程中所示的dockerfile生成图像并使用相同的图像创建容器。

答案 2 :(得分:0)

我遇到了同样的问题,mount / code没有显示出来。我在mac上使用docker( Docker版本1.8.1,构建d12ea79 )( mac os x yosemite 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

答案 3 :(得分:0)

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

实际上,容器(和所有文件)已经在/var/lib/docker/overlay2/.../diff/code/中创建,这就是为什么提到“成功构建...”的日志的原因,但不会复制回触发cmd的文件夹。 希望这会有所帮助。

答案 4 :(得分:0)

我只是在使用WSL的docker上遇到了这个问题,并对其进行了跟踪-这是卷安装的问题。基本上,要解决此问题,您需要在已安装的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