Pull to refresh

Запускаем docker compose в Windows

Reading time3 min
Views55K
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 как контейнера, т.к. считаю его неудобным.
Tags:
Hubs:
+8
Comments3

Articles

Change theme settings