Jak stworzyć swój niestandardowy obraz Docker Redmine?
Redmine przed dostosowaniem
Note: Natywną aplikację dokującą Redmine można znaleźć na https://hub.docker.com/_/redmine. Tutaj możesz również znaleźć dobre instrukcje dotyczące wypełniania zewnętrznej bazy danych i montowania folderów zewnętrznych (aby móc instalować wtyczki).
Jeśli jesteś podobny do mnie i wolisz bezpośrednio zobaczyć kod budowania niestandardowego obrazu Redmine Docker, możesz przejść do https://github.com/lcofre/redmine i sprawdź plik Docker.
Obraz Redmine Docker jest dobrym punktem wyjścia, chociaż prawdopodobnie chcesz go dostosować za pomocą wtyczek i motywów, które ci się podobają. W tym poradniku zbudujemy obraz Dockera w oparciu o oficjalny, dodamy motywy i wtyczki i prześlemy go do rejestru dokera.
Dla uproszczenia nie będziemy używać zewnętrznej bazy danych, ale wewnętrznej bazy danych w samym kontenerze Redmine. Jednak w środowisku produkcyjnym wskazane jest skonfigurowanie dedykowanego kontenera pamięci.
Wtyczki i motywy
Wybraliśmy kilka wtyczek i motywów, aby zilustrować różne sposoby dodawania ich do Redmine:
- Ukryj pasek boczny, wtyczka zapewniająca więcej miejsca na ekranie, zwłaszcza podczas pisania problemów
- Wklej schowek, aby dołączyć zrzuty ekranu wklejane ze schowka zamiast wybierać plik
- A1 i Gitmike, dwa motywy do zmiany wyglądu interfejsu użytkownika
Wykluczamy wtyczki wymagające migracji bazy danych, ponieważ potrzebujesz wcześniej istniejącej bazy danych. Skomentuj poniżej, jeśli chcesz zainstalować wtyczkę wymagającą migracji, ponieważ mamy dla Ciebie dobre pomysły.
Pisanie pliku Docker
Plik Docker to przepis na to, jak zbudować obraz Docker. Pierwszym faktem, którego się tutaj dowiemy, jest to, że musimy oprzeć nasz obraz na innym obrazie, więc użyjemy oficjalnego dla Redmine
Z Redmine
Ta pierwsza linia pliku Docker będzie bazować na najnowszym i największym obrazie, 4.1.0 w momencie pisania. Ponieważ pobierze to najnowszą wersję, możesz użyć konkretnej wersji, aby uniknąć nieoczekiwanych nowych wersji, które mogą uszkodzić kompilację tego obrazu
Z Redmine: 4.1.0
Korzystanie z Git, aby uzyskać składniki
W większości przypadków motywy i wtyczki mają repozytoria git, z których możemy pobrać najnowszy kod. Dotyczy to następujących trzech elementów.
Podstawowy obraz Redmine jest dostępny bez git, ale w ten sposób możemy go dodać do obrazu
Uruchom RUN apt install -y git
Zostanie to wykonane po zbudowaniu obrazu i pozwoli ci użyć git w poniższych instrukcjach.
Motyw Gitmike: zalecają bezpośrednie klonowanie swojego repozytorium
URUCHOM klon git https://github.com/makotokw/redmine-theme-gitmike.git public / themes / gitmike
Linia zapisze sklonowany projekt w odpowiednim folderze public / themes
Ukryj pasek boczny: Tę samą procedurę można zastosować do wtyczek. Ten wymaga jedynie umieszczenia sklonowanego folderu w folderze wtyczek
URUCHOM klon git https://gitlab.com/bdemirkir/sidebar_hide.git plugins / sidebar_hide
Wklej obraz ze schowka: Wydaje się to również typową procedurą, sklonuj repozytorium i możesz zacząć
URUCHOM klon git https://github.com/RubyClickAP/clipboard_image_paste.git plugins / clipboard_image_paste
Ale jeśli ty czytaj więcej zobaczysz, że „zalecane jest zainstalowanie klejnotu RMagick, w przeciwnym razie załączone obrazy nie będą wyświetlane w eksportowanych plikach PDF”. Więc jak to robimy? To powinno być tak proste jak
URUCHOM gem zainstaluj rmagick
ale prawdopodobnie wiesz, że klejnot musi zostać zbudowany, zanim będzie można go zainstalować, więc musisz zainstalować kilka pakietów przed zainstalowaniem klejnotu. Linia, której naprawdę potrzebujesz, to
URUCHOM apt install -y build-essential imagemagick libmagickcore-dev libmagickwand-dev ruby-dev \
&& gem zainstaluj rmagick
Wszystko w jednym poleceniu, oddzielone w dwóch wierszach dla czytelności.
Oryginalny autor tej wtyczki nie udostępnia wersji dla Redmine 4, ale wyszukiwanie nazwy wtyczki w GitHub znalazło mnie w projekcie, który: RubyClickAP / clipboard_image_paste.
Dodanie wtyczki lub motywu z pobranego źródła
Opona Motyw A1 jest dobrym przykładem ilustrującym przypadki, w których masz źródło, ale nie adres URL do pobrania podczas procesu kompilacji. Jedną z opcji w takich przypadkach jest dostarczenie źródła do procesu budowy. W ten sposób zawartość jest dodawana do obrazu bez pobierania
KOPIUJ a1 public / themes / a1
Wymaga to, aby folder a1 znajdował się w tym samym miejscu, co plik Docker.
Teraz możesz zbudować swój obraz, więc otwórz terminal, w którym znajduje się plik Dockerfile i uruchom go
docker buduje -t my-redmine.
Po zbudowaniu będziesz mógł uruchomić swój obraz
docker run -it -p 3000: 3000 --name my-redmine my-redmine
Śmiało i otwórz http: // localhost: 3000, aby zobaczyć swój niestandardowy Redmine!
Redmine po dostosowaniu
Kilka wskazówek, jak dodać więcej wtyczek
Aby wypróbować nowe wtyczki, zawsze lepiej jest użyć świeżego pojemnika Redmine. W ten sposób zdałem sobie sprawę, że rmagick wymaga zainstalowania niektórych pakietów. Najpierw uruchom odrzucalną instancję Redmine za pomocą
docker run --rm -d -p 3000: 3000 - nazwa test-redmine redmine
a następnie wprowadź instancję za pomocą
docker exec - it test-redmine bash
Tam możesz zainstalować pakiety systemu operacyjnego, klejnoty lub uruchomić migracje. Pamiętaj tylko o krokach, aby dodać je do pliku Docker!
Przesyłanie niestandardowego obrazu do Docker Hub
Właśnie zbudowany obraz jest dostępny tylko dla lokalnego środowiska. Co jeśli chcesz udostępnić go innym, powiedzmy wszystkim? Oczywiście możesz przesłać plik Dockerfile i powiązane pliki do repozytorium git, a osoby zainteresowane mogą samodzielnie zbudować obraz. Ale Docker pozwala również na przesłanie wbudowanego obrazu do ich rejestru. W tym celu utwórz konto w hub.docker.com, a także utwórz repozytorium dla swojego obrazu. Następnie zaloguj się w terminalu w ten sposób
login dokera
Oznacz swoje zdjęcie, aby można je było przesłać do repozytorium
tag dokera my-redmine: najnowsze lcofre / redmine: najnowsze
i popchnij to w ten sposób
docker push lcofre / redmine: najnowszy
Obraz Docker w rejestrze Docker
Teraz każdy może wypróbować Twój obraz
docker run -it -p 3000: 3000 - nazwa my-redmine lcofre / redmine
Otóż to! W ten sposób przechodzisz od standardowej instalacji Redmine do spersonalizowanej wersji dostępnej w rejestrze Docker. Udostępnij swoje uwagi lub pytania poniżej.
Przycinanie rozmiaru obrazu Docker
Przekonasz się, że Plik Docker w repozytorium połączył wiele linii w jedną. Jest to zalecenie Dockera do robienia mniejszych zdjęć. Możesz znaleźć te porady i inne w https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
Kolejnym zaleceniem w celu zmniejszenia ostatecznego rozmiaru obrazu jest użycie alpejskiej wersji Redmine
FROM Redmine: alpejski
Alpine to inna dystrybucja linuksowa. Zamiast używać apt do instalowania pakietów, musisz użyć apk.
Ostatnia wskazówka: pakiety, które zainstalowaliśmy z apt w pliku Docker, nie są już potrzebne po zbudowaniu obrazu. Możesz postępować zgodnie z najlepszą praktyką korzystania z kompilacji wieloetapowych: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#use-multi-stage-builds
Praktyka przechowywania obrazu Docker o małym rozmiarze pomaga zwłaszcza przy zwiększaniu liczby instancji, ale także zmniejsza powierzchnię ataku na obrazie.
Najlepsza aktualizacja Redmine? Łatwo.
Uzyskaj wszystkie potężne narzędzia do doskonałego planowania, zarządzania i kontroli projektów w jednym oprogramowaniu.