Это хороший подход?
Да, по крайней мере, это работает для меня с нескольких месяцев.
Разница в том, что у меня также есть файл docker-compose.yml
.
В моей Vagrantfile
есть первый раздел инициализации, который устанавливает докер, пип и докер-Compose:
config.vm.provision "shell", inline: <<-SCRIPT
if ! type docker >/dev/null; then
echo -e "\n\n========= installing docker..."
curl -sL https://get.docker.io/ | sh
echo -e "\n\n========= installing docker bash completion..."
curl -sL https://raw.githubusercontent.com/dotcloud/docker/master/contrib/completion/bash/docker > /etc/bash_completion.d/docker
adduser vagrant docker
fi
if ! type pip >/dev/null; then
echo -e "\n\n========= installing pip..."
curl -sk https://bootstrap.pypa.io/get-pip.py | python
fi
if ! type docker-compose >/dev/null; then
echo -e "\n\n========= installing docker-compose..."
pip install -U docker-compose
echo -e "\n\n========= installing docker-compose command completion..."
curl -sL https://raw.githubusercontent.com/docker/compose/$(docker-compose --version | awk 'NR==1{print $NF}')/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
fi
SCRIPT
и, наконец, раздел инициализации, который запускает докер-Compose:
config.vm.provision "shell", inline: <<-SCRIPT
cd /vagrant
docker-compose up -d
SCRIPT
Есть other ways, чтобы создавать и запускать докерные контейнеры от бродяг, но использование докеры-компоновки позволяет мне вытеснять любой докер Специфика из моего Vagrantfile. В результате этот Vagrantfile может быть повторно использован для других проектов без изменений; вам просто нужно предоставить другой файл docker-compose.yml
.
Другой вопрос, который я делаю по-другому, заключается в том, чтобы положить Vagrantfile
в корень вашего проекта (а не в каталог vagrant
), поскольку это место, где люди и инструменты (некоторые IDE) ожидают его найти. PyCharm делает, вероятно, PhpStorm.
Я также поместил свой файл docker-compose.yml
в корень моих проектов.
В конце концов, для разработки я просто перехожу в свою директорию проектов и запускаю бродягу, которая сообщает, что докеры-компоновщики (в конечном итоге строят) запускают контейнеры докеров.
Я все еще пытаюсь выяснить, как это будет работать в плане развертывания производства.
Для развертывания производства, обычной практикой является предоставление своим Docker изображения в команде ОПС, публикуя их на частныхdocker registry.Вы можете разместить такой реестр в своей собственной инфраструктуре или использовать онлайн-службы, которые предоставляют их, например Docker Hub.
Также предоставьте команде ops файл docker-compose.yml
, который определит, как запустить контейнеры и связать их. Обратите внимание, что этот файл не должен использовать инструкцию build:
, но вместо этого следует использовать команду image:
. Кто хочет создавать/компилировать материал при развертывании на производство?
Этот Docker blog article может помочь выяснить, как использовать докер-компоновку и док-рой для развертывания на кластере.
Отличный ответ, большое спасибо. Просто небольшой вопрос: в Vagrant вы используете ящик или поставщик докеров? – antonienko
Я использую поле 'phusion/ubuntu-14.04-amd64'. Я попробовал поставщика бродячего докера, но не был доволен результатом. Это было несколько месяцев назад, поэтому, возможно, теперь это работает лучше, но использование ящика + обеспечение докеров ставит вас под контроль. My Vagrantfile доступен по адресу https://github.com/thomasleveil/vagrant-phusion-docker/blob/master/Vagrantfile. – Thomasleveil