Jak stworzyć własny obraz Redmine w Dockerze.

6/16/2020
9 минути
Лукаш Беня -> Лукаш Беня
Redmine to jedno z najpopularniejszych narzędzi do zarządzania projektami i śledzenia problemów. Jeśli próbowałeś go lub musiałeś go zainstalować w środowisku produkcyjnym, prawdopodobnie wiesz, że istnieje oficjalny obraz docker, który znacznie ułatwia instalację i skalowanie dla środowisk o wysokim zapotrzebowaniu.

Redmine przed dostosowaniem

внимание: Redmine natywny docker може да се знае https://hub.docker.com/_/redmine. Tutaj można również znaleźć dobre instrukcje dotyczące sposobu wypełnienia zewnętrznej bazy danych i zamontowania zewnętrznych folderów (aby móc zainstalować wtyczki).

Jeśli jesteś jak ja i wolisz bezpośrednio zobaczyć kod do budowania niestandardowego obrazu Redmine Docker, możesz przejść do github.com/lcofre/redmine i sprawdzić plik Dockerfile.

Образът Docker Redmine е dobrym punktem wyjścia, chociaż prawdopodobnie chciałbyś go dostosować do swoich upodobań za pomocą wtyczek i motywów. W tym poradniku zbudujemy obraz Docker na podstawie oficjalnego, dodamy kilka motywów i wtyczek oraz wgrajmy go do rejestru docker.

Dla uproszczenia nie będziemy korzystać z zewnętrznej bazy danych, ale z wewnętrznej bazy danych w contenerze Redmine. W środowisku produkcyjnym jednak zaleca się skonfigurowanie dedykowanego kontenera pamięci masowej.


Wtyczki i motywy

Изберете няколко wtyczek i motywów, aby zilustrować różne sposoby dodawania ich do Redmine:

  • Ukryj pasek boczny, wtyczka umożliwiająca uzyskanie większej przestrzeni ekranowej, zwłaszcza podczas pisania problemów
  • Wklej ze schowka, umożliwiający dołączanie zrzutów екран poprzez wklejanie ze schowka zamiast wybierania pliku
  • A1 i Гитмайк, dwa motywy zmieniające wygląd interfejsu użytkownika

Wykluczamy wtyczki, które wymagają migracji bazy danych, ponieważ potrzebna jest istniejąca baza danych. Prosimy o komentarz poniżej, jeśli potrzebujesz zainstalować wtyczkę, która wymaga migracji, ponieważ mamy dla Ciebie dobre pomysły.


Писане на Dockerfile

Добавете Dockerfile, за да напишете нов образ на Docker. Pierwszą rzeczą, którą się dowiemy, jest to, że musimy opierać nasz obraz na innym obrazie, więc użyjemy oficjalnego dla Redmine

ОТ Redmine

Ta pierwsza linia pliku Dockerfile opiera nasz obraz na najnowszym i najlepszym obrazie, 4.1.0 с моментно описание. Ponieważ to pobierze najnowszą wersję, możesz wolisz użyć konkretnej wersji, aby uniknąć nieoczekiwanych nowych wersji, które mogą zepsuć budowę tego obrazu

ОТ Redmine: 4.1.0


Използване на Git за създаване на компоненти

W większości przypadków motywy i wtyczki mają repozytoria git, z których możemy pobrać najnowszy kod. Tak jest w przypadku następujących trzech komponentów.

Podstawowy obraz Redmine nie zawiera gita, ale możemy dodać go do obrazu w ten sposób:

ИЗПЪЛНАЙТЕ apt install -y git

To zostanie wykonane podczas budowania obrazu i umożliwi korzystanie z gita w następujących instrukcjach.

Motyw Gitmike: zalecają bezpośrednie klonowanie ich repozytorium

Клониране на RUN git https://github.com/makotokw/redmine-theme-gitmike.git обществена / теми / gitmike

Ten wiersz zapisze sklonowany projekt w odpowiednim folderze public/themes

Ukryj pasek boczny: Ten sam proces można zastosować do wtyczek. Ta wymaga jedynie umieszczenia sklonowanego folderu w folderze wtyczek

Клониране на RUN git https://gitlab.com/bdemirkir/sidebar_hide.git приставки / sidebar_hide

Клипборд Паста за изображения: To również wydaje się typową procedurą, sklonuj repozytorium i jesteś gotowy do działania

Клониране на RUN git https://github.com/RubyClickAP/clipboard_image_paste.git приставки / clipboard_image_paste

Ale jeśli przeczytasz trochę więcej, zobaczysz, że "zaleca się installowanie gemu RMagick, w przeciwnym razie załączone obrazy nie będą wyświetlać się w plikach PDF". Jak to zrobić? Powinno to być takie proste jak

RUN скъпоценен камък инсталирате rmagick

ale prawdopodobnie wiesz, że gem musi zostać zbudowany przed zainstalowaniem, więc musisz zainstalować kilka pakietów przed zainstalowaniem gemu. Wiersz, który naprawdę potrzebujesz, to

RUN apt install -y build-съществена imagemagick libmagickcore-dev libmagickwand-dev ruby-dev \

       && gem инсталирате rmagick

Wszystko w jednej komendzie, podzielone na dwie linie dla czytelności.

Оригиналният автор на тази информация не е доставен за Redmine 4, но не е използван от името на GitHubie, който е скиор в проекта, който има: RubyClickAP / clipboard_image_paste.


Dodawanie wtyczki lub motywu z pobranego źródła

Motyw A1 jest dobrym przykładem, aby pokazać przypadki, gdy masz źródło, ale nie masz adres URL do pobrania podczas procesu budowania. Jednym z rozwiązań w takich przypadkach jest dostarczenie źródła do procesu budowania. W ten sposób zawartość zostanie dodana do obrazu bez pobierania jej.

КОПИРАНЕ a1 обществено / теми / a1

Wymaga to, aby folder a1 był w tym samym miejscu, co plik Dockerfile.

Teraz jesteś gotowy do zbudowania swojego obrazu, więc otwórz terminal tam, gdzie znajduje się plik Dockerfile, i wykonaj

docker build -t my-redmine.

Po zbudowaniu będziesz mógł uruchomić swój obraz za pomocą

docker run -it -p 3000: 3000 - име my-redmine my-redmine

Открийте http://localhost:3000, за да видите своя достъпен Redmine'a!

Redmine po dostosowaniu


Kilka wskazówek, jak dodać więcej wtyczek

Aby wypróbować nowe wtyczki, zawsze lepiej użyć świeżego contenera Redmine. W ten sposób zdałem sobie sprawę, że rmagick wymaga zainstalowania niektórych pakietów. Najpierw uruchom tymczasowy контейнер Redmine z

docker run --rm -d -p 3000: 3000 - име тест-redmine redmine

a następnie wejdź do kontenera za pomocą

docker exec - това е тест-redmine bash

Tam możesz instaliwać paket systemowe, gemy lub uruchamiać migracje. Po prostu pamiętaj o krokach, aby móc dodać je do swojego pliku Dockerfile!


Прехвърляне на нестандартно изображение на Docker Hub

Obraz, który właśnie zbudowałeś, jest dostępny tylko w Twoim środowisku lokalnym. Co zrobić, jeśli chcesz udostępnić go innym, powiedzmy wszystkim? Oczywiście, możesz przesłać plik Dockerfile и powiązane pliki to repozytorium git, a zainteresowani będą mogli sami zbudować образ. Ale Docker позволява również przesłać zbudowany obraz do ich rejestru. W tym celu utwórz konto na hub.docker.com и utwórz również repozytorium dla swojego obrazu. Następnie zaloguj się w terminalu w ten sposób:

вход за докер

Oznacz swój obraz, aby można go było przesłać do Twojego repozytorium

docker tag my-redmine: последен lcofre / redmine: най-нов

i przesłać go w ten sposób

docker push lcofre / redmine: най-късно

Образ на Docker с регистриран Docker

Teraz każdy może wypróbować Twój obraz, wykonując

docker run -it -p 3000: 3000 - име my-redmine lcofre / redmine

За wszystko! Take przechodzisz od standardowej instalacji Redmine to spersonalizowanej wersji dostępnej w rejestrze Docker. Podziel się swoimi komentarzami lub pytaniami poniżej.


Zmniejszenie rozmiaru obrazu Docker

Zauważysz, że plik Dockerfile в хранилище połączył wiele linii w jedną. Искам да използвам Docker, за да използвам много образи. Możesz znaleźć tę radę i inne na stronie https://docs.docker.com/develop/develop-images/dockerfile_best-practices/

Innym zaleceniem zmniejszenia końcowego rozmiaru obrazu jest użycie wersji alpine Redmine

ОТ Redmine: алпийски

Alpine към inna dystrybucja Linuxa. Zamiast używać apt do instalowania pakietów, musisz użyć apk.

Ostatnia wskazówka: пакети, które zainstalowaliśmy za pomocą apt w pliku Dockerfile, nie są już potrzebne po zbudowaniu obrazu. Możesz postępować zgodnie z najlepszą praktyką stosowania wieloetapowych budowli: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#use-multi-stage-builds

Praktyka utrzymywania małego obrazu Docker pomaga szczególnie przy skalowaniu liczby instancji, ale także zmniejsza powierzchnię ataku na Twój obraz.

Най-добрата актуализация на Redmine? латва.

Zdobądź wszystkie potężne narzędzia do doskonałego planowania, zarządzania i kontroli projektów w jednym oprogramowaniu.

Открий Easy Redmine

Изпробвайте Easy Redmine за 30 дни безплатно

Pełne funkcje, zabezpieczenie SSL, codzienne kopie zapasowe, dostępne w Twojej lokalizacji