Модификация Docker образа

Тип статьи

Инструкция

КомпетенцииАдминистратор
Необходимые права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 будет новый и нам придётся только прописать строчку заново. Но это менее трудоёмко чем создание нового образа.