Как да създадете персонализиран Docker образ на Redmine
Redmine преди персонализация
Забележка: Можете да нативния докер на Redmine на https://hub.docker.com/_/redmine. Тук можете да дадете и добри инструкции за това, как да попълните външна база данни и да монтирате външни папки (за да можете да инсталирате плъгини).
Ако сте като мен и предпочитате да видите директно код за изграждане на персонализиран Docker образ на Redmine, можете да отидете на github.com/lcofre/redmine и да проверите Dockerfile.
Образът на Redmine Docker е добро начало, въпреки че вероятно бихте искали да го персонализирате с плъгини и теми по ваш вкус. В това ръководство ще изградим Docker образ, базиран на официалния език, ще добавим някои теми и плъгини и ще го качим в docker регистъра.
Заради опростяването, няма да използвате външна база данни, а вместо тази вътрешна база данни в този контейнер на Redmine. За производствена среда обаче е препоръчително да се настрои отделен контейнер за съхранение.
Плъгини и теми
Избрахме няколко плъгина и теми, за да илюстрираме различни начини за добавяне им към Redmine:
- Скриване на страничната лента, плъгин, който позволява повече място на екрана, особено при писане на проблеми
- Поставяне на изображения от клипборда, за да прикрепите снимките, като поставите от клипборда вместо да изберете файл
- A1 и Гитмайк, две теми, за да промените изгледа на потребителския интерфейс
Изключваме плъгини, които изискват миграция върху базата данни, тъй като вие е необходима предварително съществуваща база данни. Моля, коментирайте по-долу, ако имате нужда да инсталирате плъгин, който изисква миграции, тъй като имате добри идеи за вас.
Написване на Dockerfile
Dockerfile е рецепта за изграждане на Docker образ. Първото нещо, което ще научим тук, е, че трябва да базирате нашия образ на друг образ, така че ще използвате официалния образ за Redmine
ОТ Redmine
Този първи ред от Dockerfile ще базира или образец на последния и най-добър образец, 4.1.0 в момента на писане. Тъй като това ще хване каквото и да е версията, която е най-нова, може да предпочетете да използвате конкретна версия, за да избегнете неочаквани нови версии, които могат да нарушат изграждането на този образ
ОТ Redmine: 4.1.0
Използва се на Git за получаване на компонентите
В повечето случаи темите и плъгините имат git хранилища, от където можем да изтеглим най-новия код. Това е така за трите следните компонента.
Основното изображение на Redmine идва без git, но можем да го добавим към изображението по следния начин:
ИЗПЪЛНАЙТЕ apt install -y git
Това ще бъде изпълнено, когато изображението се създаде и ще ви позволи да използвате git в следващите инструкции.
Тема Gitmike: те препоръчват да клонирате директно техния репо
Клониране на RUN git https://github.com/makotokw/redmine-theme-gitmike.git обществена / теми / gitmike
Тази линия ще запази клонирания проект в подходящата папка public/themes
Скриване на страничната лента: Същата процедура може да се приложи и за плъгини. Това само поставянето на изисква клонираната папка в папката на плъгините
Клониране на RUN git https://gitlab.com/bdemirkir/sidebar_hide.git приставки / sidebar_hide
Клипборд Паста за изображения: Това също изглежда като типична процедура, клонирайте репото и сте готови да продължите
Клониране на RUN git https://github.com/RubyClickAP/clipboard_image_paste.git приставки / clipboard_image_paste
Но ако процедура малко повече, ще видите, че "се препоръчва да се инсталира гемът RMagick, в противен случай прикачените изображения няма да се показват в експортираните PDF файлове". Така че как да го направим? Трябва да бъде толкова лесно, колкото:
RUN скъпоценен камък инсталирате rmagick
но вероятно знаете, че гемът трябва да бъде построен, преди да може да бъде инсталиран, така че трябва да инсталирате някои пакети преди да инсталирате гема. Линията, която наистина ви трябва, е:
RUN apt install -y build-съществена imagemagick libmagickcore-dev libmagickwand-dev ruby-dev \
&& gem инсталирате rmagick
Всичко в една команда, разделена на две реда за по-добра четвъртост.
Оригиналният автор на този плъгин не предоставя версия за Redmine 4, но търсенето на името на плъгина в GitHub ме доведе до проекта, който го прави: RubyClickAP / clipboard_image_paste.
Добавяне на плъгин или тема от изтеглен източник
Тема A1 е добър пример за илюстриране на случаите, когато имате източника, но не и URL за изтегляне по време на процеса на създаване. Една опция в такива случаи е за предоставяне на източника на процеса на създаване. Това съдържание се добавя към изображението, без да се изтегля.
КОПИРАНЕ a1 обществено / теми / a1
Тази папка a1 изисква да бъде на това място, където е Dockerfile.
Сега сте готови да създадете изображението си, така че отворите терминал там, където е Dockerfile, и изпълнете
docker build -t my-redmine.
След като е създадено, ще можете да стартирате изображението си с
docker run -it -p 3000: 3000 - име my-redmine my-redmine
Отворете http://localhost:3000, за да видите персонализирания си Redmine!
Redmine след персонализация
Някои съвети за добавяне на повече плъгини
За да опитате нови плъгини, винаги е по-добре да използвате нов контейнер на Redmine. Така разбрах, че rmagick е инсталиран на някои пакети. Първо, стартирайте изтриваемата инстанция на Redmine с
docker run --rm -d -p 3000: 3000 - име тест-redmine redmine
и след това влизате в инстанцията с
docker exec - това е тест-redmine bash
Там можете да инсталирате OS пакети, гемове или да изпълните миграции. Просто запомнете стъпките, за да ги добавите към Dockerfile!
Качване на персонализирано изображение в Docker Hub
Изображението, което току-що построихте, е достъпно само за вашата локална среда. Какво ако искате да направите достъпно за други, кажете за всички? Разбира се, можете да качите Dockerfile и да свържете файлове в git repo, а заинтересованите могат да построят изображението сами. Но Docker ви позволява да качите построеното изображение в техническия регистър. За това създайте акаунт в hub.docker.com и също така създайте хранилище за изображението си. След това влезте в терминала по следния начин
вход за докер
Маркирайте изображението си, така че може да бъде качено във вашето хранилище
docker tag my-redmine: последен lcofre / redmine: най-нов
и го качете по следния начин
docker push lcofre / redmine: най-късно
Изображението на Docker в регистъра на Docker
Сега всеки може да опита вашето изображение, като направи
docker run -it -p 3000: 3000 - име my-redmine lcofre / redmine
Това е! Така можете да преминете от инсталиран стандартен Redmine до персонализирана версия, достъпна в регистъра на Docker. Моля, споделете коментарите или въпросите си по-долу.
Намаляване на размера на Docker изображението
Ще откриете, че Dockerfile в репо съединява много редове в един. Това е препоръка на Docker, за да се навредят по-малки изображения. Можете да намерите този съвет и други в https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
Още една препоръка за намаляване на крайния размер на изображението е за използване на алпайн версията на Redmine
ОТ Redmine: алпийски
Алпайн е различна дистрибуция на Linux. Вместо това, за да използвате apt за инсталиране на пакети, трябва да използвате apk.
Още един съвет: пакетите, които инсталирате с apt в Dockerfile, вече не са нужни след като изображението е построено. Можете да изберете най-добрата практика за използване на многоетажни конструкции: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#use-multi-stage-builds
Практиката да се поддържа малко Docker изображение помага особено при увеличаване на броя на инстанциите, но също така намалява атаката на повърхността на изображението ви.
Крайната надстройка на Redmine? Лесна.
Получете всички мощни инструменти за перфектно планиране, управление и контрол в един софтуер.