Docker compose — инструмент который позволяет описывать, запускать, останавливать, смотреть логи, клонировать контейнеры и много чего еще. Главное конечно, описание приложения которое состоит из нескольких связанных друг с другом контейнеров. Это может быть что угодно, сайт, база данных, memcache, контейнер c myadmin. Или в нашем случае простое приложение WordPress: база данных, контейнер с PHP нужной версии и внешний nginx.
Настройка и установка, как и все что касается докера, предельно просты. Самое основное что нужно сделать — понять как работает докер, это описано в предыдущей статье:
Настройка docker. Пример настройки и миграции проекта в Docker.
Итак поехали:
$ sudo curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose $docker-compose -v docker-compose version 1.6.2, build 4d72027
Далее на основании всего что мы делали в прошлой статье создаем красивый конфиг формата yml:
nginx_in: container_name: nginx_in hostname: nginx_in image: nginx:latest ports: - "5.9.193.100:80:80" - "5.9.193.100:443:443" volumes: - /srv/docker/casp.ru/old/var/www/casp.ru/old:/var/www/casp.ru/old:ro - /srv/docker/nginx_in/log:/var/log/nginx:rw - /srv/docker/nginx_in/etc/nginx:/etc/nginx/:ro links: - php_caspru:php_caspru php_caspru: container_name: php_caspru hostname: php_caspru build: ./php-caspru/ volumes: - /srv/docker/casp.ru/old/var/www/casp.ru/old:/var/www/html:rw - /srv/docker/casp.ru/old/etc/apache2/sites-enabled:/etc/apache2/sites-enabled:rw links: - mysql_local:mysql_local mysql_local: container_name: mysql_local hostname: mysql_local image: mysql/mysql-server:latest volumes: - /srv/docker/mysql/db/:/var/lib/mysql
И запускаем:
$ docker-compose up -d Starting mysql_local Starting php_caspru Starting nginx_in
Если контейнеры уже запущены, но конфиг изменен то произойдет перезапуск того контейнера, конфиг которого был изменен и все те, которые на него залинкованы. Что логично.
Доки тут: https://docs.docker.com/compose/