Модификация Docker образа
- Олег Иванов (Unlicensed)
- Юсеф Бенариеб (Unlicensed)
Тип статьи | Инструкция |
---|---|
Компетенции | Администратор |
Необходимые права | root |
Версия платформы | 2.21.1 |
Статус | БЕТА |
Сложность | легко |
Полезные ссылки | Docker CLI - https://docs.docker.com/engine/reference/commandline/docker/ |
Дополнительные сведения | Ubuntu 20.04, Docker 20.10.2 |
При устаревании инструкции используйте описанные в ней подходы и более свежие знания в документации актуальной версии платформы и docker. Вы также всегда можете написать на support@visiology.su с запросом о помощи или замечанием по инструкции.
Содержание
Введение
Данная инструкция поможет вам отредактировать файлы в контейнере Docker и затем зафиксировать эти изменения. В инструкции будут рассмотрены два способа.
Конкретно в данном примере мы изменим значения атрибутов стиля логотипа на странице логина.
1. Вводные данные
Имеем Ubuntu 20.04, Docker 20.10.2 и платформу Visiology 2.21.1.
Железо типовое и соответствует системным требованиям платформы для целей тестирования (см. статью системные требования).
2. Редактирование файлов в контейнере
Приступаем к редактирование файлов.
Для начала входим в контейнер Identity Server. Вводим следующую команду:
sudo docker exec -it $(sudo docker ps --format "{{.Names}}" --filter name=identity) /bin/bash
После входа в контейнер открываем файл стилей для редактирования:
nano wwwroot/css/portal/site.css
В файле находим секцию .company-logo и редактируем нужные нам атрибуты. Например атрибут margin-left задаёт центрирование логотипа, если логотип очень широкий, можно подкорректировать это значение.
После редактирования выходим из контейнера нажав Ctrl+D, либо набрав команду:
exit
3. Фиксируем изменения контейнера в новый Docker образ
Вводим команду:
sudo docker commit -m "Identity with replace title" $(sudo docker ps | grep "identity" | awk '{print $1}') identity-server:custom
Тем самым мы создадим новый образ identity-server:custom с зафиксированными изменениями.
Чтобы использовать данный образ в платформе, ему необходимо задать имя и тег как у текущего образа identity server, либо в скрипте run.sh заменить название образа и тег. Мы переименуем наш кастомный образ:
sudo docker tag identity-server:custom cr.yandex/crpe1mi33uplrq7coc9d/visiology/release/identity-server:latest
После этого можно перезапустить платформу.
sudo ./run.sh --restart
Предупреждение
После обновления платформы, мало того, что придётся опять изменять тег образа, но также наш кастомный образ устареет и его придётся создавать заново. Чтобы избежать этой процедуры, можно пойти другим путём. Об этом далее.
4. Как обойтись без создания нового образа
Можно выполнить маппинг нужного нам файл в каталог Docker хоста. Для этого мы открываем файл platform.yml (лежит в папке с дистрибутивом платформы) для редактирования:
sudo vim ./platform.yml
В этом файле ищем секцию "identity-server:" и в блоке "volumes:" добавляем следующее:
/docker-volume/identity-server/site.css:/app/wwwroot/css/portal/site.css
Изменённый файл site.css необходимо скопировать в каталог /docker-volume/identity-server/site.css. Теперь если у нас будет выполнятся перезапуск платформы, файл site.css будет взят из каталога /docker-volume/identity-server/, который мы прописали в yml файле. После этого можно перезапускать платформу.
После обновления платформы, файл platfotm.yml будет новый и нам придётся только прописать строчку заново. Но это менее трудоёмко чем создание нового образа.