我正在关注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机器时,有关本地文件夹共享的规则是否不同?
答案 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