Jak stworzyć własny obraz Redmine w Dockerze.
Redmine przed dostosowaniem
προσοχή: Redmine natywny docker można znaleźć na 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.
Obraz Docker Redmine jest 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 kontenerze Redmine. W środowisku produkcyjnym jednak zaleca się konfigurowanie dedykowanego kontenera pamięci masowej.
Wtyczki i motywy
Wybraliśmy kilka 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 ekranu poprzez wklejanie ze schowka zamiast wybierania pliku
- A1 i Gitmike, 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.
Pisanie pliku Dockerfile
Κάντε κλικ στο Dockerfile για να δημιουργήσετε το πρόγραμμα Docker. Pierwszą rzeczą, którą się dowiemy, αστεία με, ż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 w momencie pisania. 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
Używanie Git do pobierania komponentów
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:
RUN 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
Εκτελέστε τον κλώνο git https://github.com/makotokw/redmine-theme-gitmike.git δημόσια / θέματα / gitmike
Δέκα wiersz zapisze sklonowany project w odpowiednim folderze public/themes
Ukryj pasek boczny: Ten sam process można zastosować do wtyczek. Ta wymaga jedynie umieszczenia sklonowanego folderu w folderze wtyczek
Εκτελέστε τον κλώνο git https://gitlab.com/bdemirkir/sidebar_hide.git plugins / sidebar_hide
Επικόλληση εικόνας πρόχειρου: To również wydaje się typową procedurą, sklonuj repozytorium i jesteś gotowy do działania
Εκτελέστε τον κλώνο git https://github.com/RubyClickAP/clipboard_image_paste.git plugins / clipboard_image_paste
Ale jeśli przeczytasz trochę więcej, zobaczysz, że "zaleca się zainstalowanie 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 gem εγκατάσταση 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, το
RUN apt install -y build-sential imagemagick libmagickcore-dev libmagickwand-dev ruby-dev \
&& gem εγκατάσταση rmagick
Wszystko w jednej komendzie, podzielone na dwie linie dla czytelności.
Αρχικός συγγραφέας tej wtyczki nie dostarcza wersji dla Redmine 4, ale wyszukiwanie nazwy wtyczki w GitHubie skierowało mnie na project, który ją ma: 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 adresu URL do pobrania podczas processu budowania. Jednym z rozwiązań w takich przypadkach jest dostarczenie źródła do processu budowania. W ten sposób zawartość zostanie dodana do obrazu bez pobierania jej.
COPY a1 δημόσιο / θέματα / a1
Wymaga to, aby φάκελο 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
Otwórz http://localhost:3000, aby zobaczyć swojego dostosowanego Redmine'a!
Redmine po dostosowaniu
Kilka wskazówek, jak dodać więcej wtyczek
Aby wypróbować nowe wtyczki, zawsze lepiej użyć świeżego kontenera Redmine. W ten sposób zdałem sobie sprawę, że rmagick wymaga zainstalowania niektórych pakietów. Najpierw uruchom tymczasowy kontener Redmine z
docker run --rm -d -p 3000: 3000 --name test-redmine redmine
a następnie wejdź do kontenera za pomocą
docker exec -it test -redmine bash
Tam możesz installować pakiety systemowe, gemy lub uruchamiać migracje. Po prostu pamiętaj o krokach, aby móc dodać je do swojego pliku Dockerfile!
Przesyłanie niestandardowego obrazu do 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 do repozytorium git, a zainteresowani będą mogli sami zbudować obraz. Ale Docker pozwala 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:
σύνδεση στο docker
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: τελευταία
Ο Obraz 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! Χρησιμοποιήστε το Redmine για να εγκαταστήσετε το Redmine και να εγκαταστήσετε το προσωπικό του Docker. Podziel się swoimi komentarzami lub pytaniami poniżej.
Zmniejszenie rozmiaru obrazu Docker
Zauważysz, że plik Dockerfile w repozytorium połączył wiele linii w jedną. Jest to zalecenie Docker, aby uzyskać mniejsze obrazy. 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 installowania pakietów, musisz użyć apk.
Ostatnia wskazówka: pakiety, 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.
Najlepsza aktualizacja Redmine; Łatwa.
Zdobądź wszystkie potężne narzędzia do doskonałego planowania, zarządzania i kontroli projektów w jednym oprogramowaniu.