приложение django не создается при следовании учебнику по созданию докеров

Я следую учебнику по созданию докеров, чтобы попытаться выяснить, как развернуть приложение django: http://docs.docker.com/compose/django/

И все идет гладко (приложение даже работает!), но папка проекта django composeexample не создается в моем локальном каталоге проекта.

У меня осталось рабочее "Это работает!" страница после запуска:

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

Но я не могу продолжать редактировать composeexample/settings.py, как подсказывает туториал: Папка не существует на моей машине (она существует в контейнере, но мне там нехорошо!)

В учебнике ошибка? Я что-то не так понял?

Спасибо!

ОБНОВИТЬ:

Вот в чем проблема, я использую docker-machine для запуска всего этого процесса через удаленный экземпляр docker. Отличаются ли правила общего доступа к локальным папкам при использовании удаленной докер-машины?


person 0atman    schedule 22.07.2015    source источник
comment
Я думаю, вы хотите использовать volumes с помощью docker-compose + docker-machine Возможно этот ответ — то, что вы ищете.   -  person Alexis N-o    schedule 22.07.2015


Ответы (5)


Вам нужно настроить файл докера, чтобы при сборке докера он копировал ваш локальный код в контейнер. Для начала вам нужно будет скопировать файлы из контейнера в локальный. Посмотрите здесь для этого. Или просто перезапишите каталог своим собственным приложением django.

Копирование файлов с хоста в контейнер Docker

пример:

FROM python:2.7
RUN mkdir /code
WORKDIR /code
ADD . /code/
person RustyShackleford    schedule 22.07.2015
comment
т. е. в учебнике не упоминается копирование сгенерированного кода из контейнера в локальный каталог. Разве изменения не должны автоматически синхронизироваться с локальным каталогом? - person 0atman; 22.07.2015
comment
@Oatman, не забудь . период при запуске $ docker-compose run web django-admin.py startproject composeexample - person RustyShackleford; 22.07.2015
comment
Спасибо, я перепроверил, и это была опечатка в моем вопросе, а не команда, которую я выполнил неправильно :-P Если я запущу ее снова, она говорит /code/manage.py already exists - person 0atman; 22.07.2015
comment
Я только что быстро просмотрел учебник, он работает и добавляет папку composeexample в вашу локальную систему. Просто сначала создайте 3 файла, а затем запустите docker-compose run web django-admin.py startproject composeexample . из этого каталога. - person RustyShackleford; 22.07.2015
comment
О боже, я все разрушу и начну с нуля, дай мне минутку! - person 0atman; 22.07.2015
comment
Ой! Я вижу, что я делаю! Я использую докер-машину, чтобы делать все это удаленно. Изменит ли это ситуацию? - person 0atman; 22.07.2015
comment
Я не знаком с докер-машиной - person RustyShackleford; 22.07.2015
comment
Нет проблем, я обновил Q с проблемой. С другой стороны, вы должны попробовать это, это удивительно простая облачная оркестровка для докера. docker.com/docker-machine - person 0atman; 22.07.2015
comment
Я не думаю, что использую докер-машину, и у меня также есть эта проблема - как вы в конечном итоге решили ее? - person seth; 17.10.2020

Я сталкиваюсь с той же проблемой, когда монтирование/код не отображается. Я использую Docker (Docker версии 1.8.1, сборка d12ea79) на Mac (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
person mihirv    schedule 29.08.2015
comment
Такая же проблема - исправил? - person seth; 17.10.2020

ДОБАВЛЯТЬ . /code/ в файле докера будет фактически монтировать ваш локальный рабочий каталог внутри образа докера. Таким образом, вы можете вносить изменения в код внутри вашего рабочего каталога, и он будет обновлен внутри контейнера докеров, поскольку рабочий каталог смонтирован внутри него.

Используйте dockerfile, как показано в руководстве, для создания образа и используйте тот же образ для создания контейнера.

person thinkingmonster    schedule 22.07.2015

Была такая же проблема, потому что я изменил имя папки «/code» в Dockerfile, но забыл изменить имя папки в файле docker-compose.yum. Поэтому убедитесь, что имя папки в двух файлах совпадает.

А на самом деле контейнер(и все файлы) уже создан в /var/lib/docker/overlay2/.../diff/code/, поэтому в логе упоминается "Успешно построено...", но не копируется вернитесь в папку, в которой вы запускаете cmd. Надеюсь это поможет.

person zhihong    schedule 03.08.2018

У меня только что была эта проблема в докере с WSL, и я отследил ее — это была проблема с монтированием тома. В основном, чтобы решить эту проблему, вам нужно создать каталог проекта в WSL на смонтированном томе c, а не в собственном каталоге WSL. В моем случае это означало создание каталога моего проекта здесь: /c/Users/seth/proj_dir

Вы можете узнать больше о проблемах с монтированием в этом превосходном руководстве по WSL/Docker (найдите «Создать и изменить новый файл конфигурации WSL», а затем снова найдите «docker-compose up»: https://nickjanetakis.com/blog/установка-докера-для-окна-и-wsl-для-работы-безупречно

person seth    schedule 16.10.2020