Знакомство с Docker Compose
Categories:
Знакомство с Docker Compose
1. Что такое Docker Compose ?
Docker Compose — это мощный инструмент, позволяющий очень быстро развёртывать приложения, отличающиеся сложной архитектурой. Если Docker оперирует отдельными контейнерами, то Docker Compose оперирует уже набором контейнеров, т.е. есть сервисов.
2. Создание проекта для Docker Compose
2.1 Создадим базовый проект, для демонстрации функций docker compose
Рисунок 1 - строение базового проекта
Содержимое файла Dockerfile в папках client и server будут отличаться
только названием python файлов, которые мы добавляем и, в случае с
Dockerfile’а в папке server – мы также добавляем файл index.html:
DockerFile client
FROM python:3
WORKDIR /client/
ADD client.py .
DockerFile server
FROM python:3
WORKDIR /server/
ADD server.py .
ADD index.html .
Создаём файл docker-compose.yaml и указываем в качестве сервисов наши
server и client и соответствующие им папки:
version: "3"
services:
server:
build: server/
command: python ./server.py
ports:
- 4444:4444
client:
build: client/
command: python ./client.py
network_mode: host
depends_on:
- server
2.2 Соберём наш проект
Вводим команду: docker-compose build
Рисунок 2 - Сборка всего проекта одной командой docker-compose build
Проверим наши собранные образы командой docker images:
Рисунок 3 - проверка собранных образов Docker
Как видно на рисунке 3 - оба наших образа успешно собрались. Теперь давайте их запустим, проверим их работоспособность.
Сделать это можно также при помощи Docker Compose, а именно при помощи
команды docker-compose up:
Рисунок 4 - запуск всех контейнеров
Результат запуска и работы контейнеров успешен (клиент успешно выводит содержимое index.html, полученный с сервера):
Рисунок 5 - вывод «клиента» полученных данных от «сервера»
Можно также заметить, что «клиент» отключается (возвращает ноль) в выводе команды docker-compose, что означает, что контейнер завершил свою работу. Проверим это:
Рисунок 6 - работа только одного контейнера «сервер»
Также сверим результат вывода «клиента» контейнера с оригинальным файлом:
Рисунок 7 - проверка правильности чтения файла index.html
3. Применим наши новые навыки для сборки новой версий Cyberpolygon
3.1 В новой версии Cyberpolygon был добавлен Docker Compose (рисунки 8-10):
Рисунок 8 - начало сборки
Рисунок 9 - сборка успешно завершена
Запустим контейнеры командой docker-compose up и зайдём на localhost:8000
Рисунок 10 - успешный запуск контейнеров для сайта Cyberpolygon'а
Вывод
Мы узнали: что такое docker-composer, его базовые настройки и способы применения и успешно запустили тестовый проект и проект Cyberpolygon