[Из песочницы] Запускаем 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 https://bootstrap.pypa.io/get-pip.py | python pip install virtualenv curl -skS https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get-pipsi.py | 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 как контейнера, т.к. считаю его неудобным.