Docker compose — инструмент который позволяет описывать, запускать, останавливать, смотреть логи, клонировать контейнеры и много чего еще. Главное конечно, описание приложения которое состоит из нескольких связанных друг с другом контейнеров. Это может быть что угодно, сайт, база данных, memcache, контейнер c myadmin. Или в нашем случае простое приложение WordPress: база данных, контейнер с PHP нужной версии и внешний nginx.
Настройка и установка, как и все что касается докера, предельно просты. Самое основное что нужно сделать — понять как работает докер, это описано в предыдущей статье:
https://www.casp.ru/old/docker_and_docker_compose/
Итак поехали:
$ 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/