【发布时间】:2019-12-18 20:53:14
【问题描述】:
我正在关注 docker/django 教程:https://docs.docker.com/compose/django/
我建立了一个项目目录 C:\docker_test 并按照指南中的描述配置了 docker-compose.yml、Dockerfile 和 requirements.txt。
这是 docker-compose.yml 的内容:
version: '3'
services:
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
以及 Dockerfile 的内容:
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip --proxy=http://mycorpproxy:80 install -r requirements.txt
COPY . /code/
当我运行docker-compose run web django-admin startproject composeexample . 时,它按预期执行,但我没有看到创建的 composeexample 目录。如果我尝试重新运行命令,我会收到此错误:
CommandError: /code/manage.py already exists, overlaying a project or app into an existing directory won't replace conflicting files
我的本地机器上没有 /code/ 目录...它在哪里?
谢谢!
编辑:这感觉不像是一个答案,但这就是我如何让它再次工作。我卸载了docker并重新安装。我们的 Sec 部门非常严格地控制主机 FW 规则,因此我不得不让帮助台人员调整主机上的一些防火墙规则,然后我们就让它工作了。上次安装 docker 时我也必须这样做,但这次似乎有些事情发生了。在这种情况下,如果有办法不使用网络共享来访问驱动器,那就太好了。
【问题讨论】:
-
向我们展示您的 docker-compose.yml。您很可能没有正确指定卷。
-
@jozo 感谢您的提问。我只是将 docker-compose.yml 的内容添加到原始帖子中。如果你看到任何东西,请告诉我。我怀疑 Dockerfile 有问题,所以我也会添加它。
-
/code/目录在您的 docker 容器中。您可以运行docker-compose run web pwd和docker-compose run web ls -l来查看您在 docker 容器中的目录。 -
感谢@d0niek 的信息!我可以看到代码,并且 composeexample 目录是在容器内创建的。在我的旧 PC 上,我的项目文件夹中也创建了 composeexample 文件夹,教程似乎表明情况就是如此。所以对我来说问题仍然存在,如果代码文件夹是在 docker 映像中创建的,为什么它不在本地文件夹中?
-
您已将本地项目目录
.挂载到容器目录/code。那是一个符号链接。它不是在你的本地目录,它是你的本地目录。
标签: django docker docker-compose