2014-01-13 2 views
3

Мы пытаемся создать контейнер Docker, который будет размещать и запускать наш webapp (в основном, написанный на PHP с помощью Symfony2).Создайте и запустите среду разработки с помощью Docker

На данный момент контейнер включает весь код приложения, клонированный при создании изображения (через файл Docker). Приложение работает правильно, на OSX, через Vagrant (базовое изображение Precise64). Теперь мы пытаемся разделить встроенный код контейнера с хостом (Vagrant -> OSX) для целей разработки (отредактируйте файл на хосте OSX, чтобы он повлиял на код контейнера). Кажется, что нет возможности разделить эту папку с контейнером на хост. Совместное использование папки с хоста в контейнере (-v) команды run) перезаписывает исходную папку контейнера. Неправильная ссылка не работает, так как хосты (Vagrant и OSX) не могли прочитать исходное местоположение.

Я уверен, что это решение с тонами Докера (http://docs.docker.io/en/latest/use/working_with_volumes/), но мы еще не выяснили, как это сделать.

У вас есть отзывы/опыт?

+0

Я написал руководство по размещению среды вашего разработчика на докере. Это немного устарело в стандартах докеров, поэтому могут быть места, которые не соответствуют лучшим практикам. [Проверить здесь] (http://play.thinkcube.com/development-environment-on-docker). – chanux

ответ

3

Вы можете использовать файл в OSX в контейнере в следующей строке:

OSX dir(host) -shared fold-> /vagrant(vagrant) -volume-> container dir(container) 

но файл сохраняется в размещении не контейнер.

Если вы хотите сохранить файл в контейнере и поделиться им с вашим хостом OSX, весь файл вашего контейнера находится в каталоге aufs в каталоге/var/lib/docker/aufs/mnt/{container id}, вы можете поделиться этим к вам OSX пером, поддерживаемым бродягой или другими:

container dir(container) -aufs-> /var/lib/docker/aufs/mnt/{id}(vagrant) -some-> OSX dir(host) 
+0

Первый вариант кажется правильным ИМХО. Поделитесь своей папкой на/vagrant, а затем используйте тома, чтобы позволить контейнеру обращаться к этим файлам. –

+0

Я подумал о 1-м решении, но вставив код в контейнер, позвольте мне создать образ, готовый к работе, без необходимости сначала клонировать репо, выполнять сценарии инициализации (например, DB, в зависимости от кода приложения) и т. Д. –

+0

Эти методы работают так же, как и наоборот. Вставьте код в контейнер (используя Dockerfile и RUN, чтобы клонировать репо во время сборки), а затем выведите каталог, в котором код клонирован в вагрантский/бродячий каталог, который вы можете в свою очередь получить доступ от хоста. –