- Установлено все необходимое окружение
- Поработал с docker локально
- Создал docker-host в yandex cloud с помощью docker-machine
- Собрал образ из Dockerfile
- Поработал с docker на docker-host
- Загрузил образ на docker hub
- Ещё поработал на docker-host используя образы из docker hub
Задания со *
- Инстансы описаны в виде кода terraform, их количество задается переменной
- Написаны плейбуки для установки докера и запуска приложения
- Подготовлен конфиг для создания шаблона ОС с устаноаленным докером
- Скачан исходный код приложения
- Для каждого компонента создан Dockerfile
- Собраны 3 контейнера с компонентами
- Создана сеть для приложения
- Базовый образ в ui был заменент на ubuntu:16.04 и пересобран. Разница в размере 300 МБ в лучшую сторону
- Создан раздел reddit_db для базы данных, чтобы при перезапуске контейнеров файлы БД сохранялись на хостовой машине
Задания со *
- Конейнеры запущены с другими сетевыми алиасами и указаны переменные через флаг '-e':
sudo docker run -d --network=reddit --network-alias=post_db_1 --network-alias=comment_db_1 -v reddit_db:/data/db mongo:latest
sudo docker run -d --network=reddit --network-alias=post_1 -e POST_DATABASE_HOST=post_db_1 rulimanskiy/post:1.0
sudo docker run -d --network=reddit --network-alias=comment_1 -e COMMENT_DATABASE_HOST=comment_db_1 rulimanskiy/comment:1.0
sudo docker run -d --network=reddit -p 9292:9292 -e POST_SERVICE_HOST=post_1 -e COMMENT_SERVICE_HOST=comment_1 rulimanskiy/ui:3.0
- ui был пересобран ещё раз с использованием базового образа alpine:3.14.5. Разница в размере 500 МБ в лучшую сторону от версии 1.0 и 200 МБ от версии 2.0
- Поработал с сетями в docker: none, host, bridge
- Запустил компоненты проекта в двух разных сетях
- Изучил как docker управляет сетевыми компонентами на хосте
- Написал docker-compose
- Добавил в docker-compose вариант запуска с несколькими сетями, параметризировал версии образов и порт приложения, переменные описал в файле environment.env.example
- Имя сервиса по умолчанию это имя директории с файлом docker-compose, изменить его можно с помощью флага '-p':
docker-compose -p my_project --env-file .env up -d
Задания со *
- Для того, чтобы можно было изменять код приложения без пересборки образа необходимо примонтировать дирректории к контейнеру(аналогично БД):
...
volumes:
- ui_volume:/app
...
volumes:
- post_volume:/app
...
volumes:
- comment_volume:/app
...
volumes:
post_db:
ui_volume:
post_volume:
comment_volume:
- Для запуска приложения в дебаг режиме с двумя воркерами, нужно в docker-compose.override.yml к каждому ruby сервису добавить:
command: puma --debug -w 2