Работа с docker + docker-compose в Unix/Linux
Запуска docker и его контейнеры вручную — это хорошо, но нужно и автоматизировать все это дело. С утилитой docker-compose — очень легко управлять контейнерами. Наглядный пример ниже.
Установка docker в Unix/Linux
Вот имеются у меня, несколько полезных ссылок в которых описывается установка docker-а.
Установка Docker на Debian/Ubuntu
Установка Docker на CentOS/RedHat/Fedora
В данных статьях описывается процесс установки докера для rpm/deb ОС. Для Mac OS X нужно выполнить подобные действия но с использованием brew команды.
Установка docker-compose в Unix/Linux
Ну, чтобы использовать compose в docker — нужно его установить. Осуществить это можно несколькими способами.
1. Выкачать файл:
Выкачиваем последнюю версию данной утилиты и сохраняем ее в нужное место:
$ curl -L "https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Выставляем права:
# chmod +x /usr/local/bin/docker-compose
2. Использовать pip:
# pip install docker-compose
И проверяем чтобы все работало:
$ docker-compose --version docker-compose version 1.7.0, build 0d7bf73
Если есть необходимость удалить:
# rm /usr/local/bin/docker-compose
Или если использовали pip:
# pip uninstall docker-compose
Создание docker контейнеров в Unix/Linux
Приводил примеры в своей статье:
Создание docker контейнера в Unix/Linux
По данной статье — создание докер контейнеров ( а в ней я приводил сборку LEMP-а), я соберу кластер из всех этих служб внутри каждого из контейнеров ( т.к по одному из запускать уже не актуально).
Создаем docker-compose.yml файл:
# vim docker-compose.yml
И прописываем в него:
version: "2"
services:
nginx:
image: nginx:latest
#environment:
# NGINX_SERVER_NAME: docker_machine.local
container_name: lemp_nginx
restart: always
links:
- php
volumes:
- ./DATA/html:/var/www/html/:ro
#- ./DATA/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./DATA/nginx/conf.d:/etc/nginx/conf.d:ro
ports:
- 80:80
- 443:443
networks:
- bridge
php:
image: php:latest
container_name: lemp_php
restart: always
volumes:
#- ./DATA/php-fpm/site.conf:/usr/local/etc/php-fpm.d:ro
- ./DATA/html:/var/www/html
depends_on:
- db
links:
- db
networks:
- bridge
environment:
- DB_NAME=lemp_magento
- TABLE_PREFIX=lemp_
- DB_HOST=lemp
- DB_PASSWORD=magento
- PHP_HOST_NAME=localhost:9000
db:
image: mariadb:latest
container_name: lemp_mariadb
restart: always
volumes:
#- ./DATA/mariadb/my.cnf:/etc/mysql/my.cnf:ro
#- ./DATA/mariadb/conf.d:/etc/mysql/conf.d:ro
- db-data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=root666PW
networks:
- bridge
volumes:
db-data:
driver: local
networks:
bridge:
driver: bridge
ipam:
config:
- subnet: 172.10.1.0/16
gateway: 172.10.1.255
aux_addresses:
nginx: 172.10.1.10
php: 172.10.1.20
db: 172.10.1.30
Для запуска всего этого добра, служит команда:
┌(vagrant@vagrant-ansible)─(✓)─(10:23 pm Sun Feb 05) └─(~/magento2)─(6 files, 12Kb)─> sudo docker-compose up -d Starting lemp_mariadb Starting lemp_php Starting lemp_nginx ┌(vagrant@vagrant-ansible)─(✓)─(10:23 pm Sun Feb 05) └─(~/magento2)─(6 files, 12Kb)─>
Чтобы убить созданное, используем:
$ sudo docker-compose kill Killing lemp_nginx ... done Killing lemp_php ... done Killing lemp_mariadb ... done
Открываем браузер и тестируем созданный стек. А статья «Работа с docker + docker-compose в Unix/Linux» завершена.