arsentievvit microservices repository
- установил Prometheus в docker
- сконфигурировал таргеты сбора метрик в конфигурационном файле
- обновил docker-compose.yml для поднятия контейнеров приложения и prometheus
- проверил метрики при выключении части контейнеров приложения
- добавил node exporter в docker-compose.yml, перезапустил, проверил метрики
Репозиторий docker hub - https://hub.docker.com/repositories/varsentiev
- выполнена установка gitlab-ci на инстанс
- проведена начальная настройка
- создана группа и проект внутри неё
- настроен раннер
- в файле .gitlab-ci.yml описан пайплайн
- протестировано создание окружений, в том числе динамическое
- ознакомился с разными типами сетей в Docker
- проверил на практике размещение контейнеров приложения в разных сетях
- опробовал инструмент docker-compose для описания сервиса из разных контейнеров
- command: "ruby --debug -w 2" внутри описания контейнера позволит запустить команду с необходимыми параметрами
- получить доступ из хостовой машины к коду внутри контейнера можно забиндив директорию хоста с кодом к директории приложения (полезно для локальной разработки)
- Склонирован архив и распакован в директорию src в корне репозитория.
- Внутри src директориях post_py, ui, comment созданы Dockerfile, описывающие создание образов для docker.
- Использован hadolint, для оптимизации Dockerfile.
- Собраны базовые образы из ДЗ (после плясок с бубном).
- Оригинальные Dockerfile, с учётом hadolint, имеют "расширение" в виде цифры в конце.
- Создан бридж reddit, с возможностью разрешать хосты в пределах сети.
- Запуск команд docker run -d ... из презентации разворачивает приложение, доступное по адресу $IP:9292.
- Контейнеры запущены с другими сетевыми именами, используя --env FOO='bar' при запуске контейнеров. На работу приложения не влияет.
- С помощью оптимизации и использования базового образа Alpine удалось снизить размер каждого сервиса до, примерно, 40Мб. Результаты описаны в Dockerfile.
- Создан volume reddit_db, который монтируется при запуске из образа mongodb. После удаления контейнера и пересоздании, данные остаются и приложение работает нормально.
Опробован docker
Создан контейнер приложения reddit
Развёрнут docker-host с помощью deprecated docker-machine
Образ запушен на docker hub и проверен локально
Создана инфраструктурная часть кода (пример для 2 инстансов):
TF_VAR_instance_count=2 terraform plan
TF_VAR_instance_count=2 terraform apply
Созданы два плейбука:
# Сделал со статическим инвентарём
ansible-playbook docker_install.yml # Подготовка докер хоста
ansible-playbook docker_image.yml # Развёртывание контейнера
Создан файл создания образа через packer:
# Создание образа
packer build --var-file variables.pkrvars.hcl .