...

понедельник, 15 июня 2015 г.

[Из песочницы] Запускаем docker compose в Windows

Docker-compose — это утилита, позволяющая запускать одновременно несколько контейнеров, используя при этом единый файл конфигурации всего стека сервисов, нужных вашему приложению. Например, такая ситуация: запускаем node.js webapp, которому нужна для работы mongodb, compose выполнит build вашего контейнера с webapp (традиционный Dockerfile) и перед его запуском запустит контейнер с mongodb внутри; так же может выполнить линк их между собой. Что крайне удобно как в разработке, так и в CI самого приложения. Так сложилось, что Windows пользователи были обделены возможностью использовать столько удобное средство, ввиду того, что официальной поддержки данной ОС все еще нет. А python версия для *nix не работает в окружении windows cmd, ввиду ограничений консоли Windows.
Для того, чтобы запустить docker-compose, мы можем использовать консольную оболочку Babun. Это, так сказать, «прокаченный» форк cygwin.

Итак, рецепт запуска docker-compose в Windows из консоли babun такой:

1. Скачиваем(~280MB!) и устанавливаем сам babun, узнать больше об этой оболочке можно на ее домашней странице babun.github.io;
2. Распаковываем архив (после установки полученную папку можно удалять);
3. Запускаем файл install.bat и ждем, пока пройдет установка;
4. После в открывшемся окне babun введем команду:

babun update


И убедимся, что у нас самая последняя версия оболочки (далее все команды выполняются только внутри оболочки babun);
5. Если вам не нравится дефолтный shell babun (используется zsh), его можно изменить на bash. Для этого вводим:
babun shell /bin/bash 


6. Теперь нам нужно установить те самые зависимости Python, которых так не хватает docker-compose. Для этого выполним следующие команды по очереди:
pact install python-setuptools 

pact install libxml2-devel libxslt-devel libyaml-devel

curl -skS http://ift.tt/1mn7OFn | python

pip install virtualenv

curl -skS http://ift.tt/1zSa4Kj | python


7. Теперь мы готовы установить сам docker-compose:
pip install -U docker-compose


Если все прошло успешно, увидим:
{ ~ }  » docker-compose --version                                                            
docker-compose 1.2.0


Если же вы получили ошибку, error python fcntl или сообщение о не найдом файле docker-compose, попробуйте найти файл docker-compose в папках /usr/local/bin, /usr/sbin и подобных, затем можно сделать симлинк на /bin/. либо добавить в системный PATH недостающий путь.

Для правильной работы docker-compose нужно иметь уже настроенное окружение консоли для работы с docker-machine или boot2docker, а так же сам клиент docker должен быть доступен в системном PATH. О том, что такое docker, docker-machine и как с ними работать отлично рассказывает официальная документация.

Для входа в окружение нашего хоста докера, запущенного в docker-machine, нужно выполнить:

eval "$(docker-machine env ИМЯ_МАШИНЫ)"


Либо тоже самое для boot2docker:
eval "$(boot2docker shellinit)"


Проверить правильность работы клиента docker можно так:
docker ps


Если получаем список контейнеров или просто заголовки таблицы, значит, все ок!
docker ps
CONTAINER ID        IMAGE                         COMMAND                CREATED             STATUS              PORTS                                          NAMES


Для запуска стека приложения переходим в каталог нашего приложения, где у нас уже должен быть заготовлен файл docker-compose.yml или fig.yml. Синтаксис yml файла описан тут.

Далее для запуска вводим команду:

docker-compose up


Если нужно запустить в фоне, добавляем -d. Compose построит нужный образ и запустит его согласно вашему файлу docker-compose.yml.

На этом все.

Спасибо за внимание, надеюсь было полезно.

p.s. Я умышлено не стал говорить о варианте запуска compose как контейнера, т.к. считаю его неудобным.

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.

Комментариев нет:

Отправить комментарий