Korleis lage di eiga tilpassa Redmine Docker-bilete

Redmine før tilpasning
Merk: Redmine native docker kan finnes på https://hub.docker.com/_/redmine. Her kan du også finne gode instruksjoner om hvordan du fyller en ekstern database og monterer eksterne mapper (for å kunne installere plugins).
Hvis du er som meg og foretrekker å se koden direkte for å bygge et tilpasset Redmine Docker-bilde, kan du gå til github.com/lcofre/redmine og sjekke Dockerfile.
Redmine Docker-bildet er et godt utgangspunkt, selv om du sannsynligvis vil tilpasse det med plugins og temaer du liker. I denne veiledningen vil vi bygge et Docker-bilde basert på det offisielle, legge til noen temaer og plugins, og laste det opp til docker-registret.
Av enkelhets skyld vil vi ikke bruke en ekstern database, men en intern database i Redmine-containeren selv. For et produksjonsmiljø anbefales det imidlertid å sette opp en dedikert lagringscontainer.
Plugins og temaer
Vi har valgt noen plugins og temaer for å illustrere forskjellige måter å legge dem til Redmine på:
- Skjul sidepanelet, en plugin som gir mer skjermplass, spesielt når du skriver saker
- Lim inn fra utklippstavlen, for å legge ved skjermbilder ved å lime inn fra utklippstavlen i stedet for å velge en fil
- A1 og Gitmike, to temaer for å endre utseendet på brukergrensesnittet
Vi ekskluderer plugins som krever en databaseoppdatering, da du trenger en eksisterende database. Vennligst kommenter nedenfor hvis du trenger å installere en plugin som krever oppdateringer, da vi har gode ideer til deg.
Skriver Dockerfile
En Dockerfile er en oppskrift på hvordan du bygger et Docker-bilde. Det første vi vil lære her er at vi må basere bildet vårt på et annet bilde, så vi vil bruke det offisielle for Redmine
FRA Redmine
Denne første linjen i Dockerfile vil basere bildet vårt på den nyeste og beste versjonen, 4.1.0 på skrivetidspunktet. Siden dette vil hente hvilken som helst versjon som er nyeste, kan du foretrekke å bruke en spesifikk versjon for å unngå uventede nye versjoner som kan ødelegge byggingen av dette bildet
FRA Redmine:4.1.0
Å bruke Git for å få komponentene
I de fleste tilfeller har temaer og utvidelser git-repositorier der vi kan laste ned den nyeste koden. Dette gjelder for følgende tre komponenter.
Den grunnleggende Redmine-bildet kommer uten git, men vi kan legge det til bildet på denne måten
RUN apt install -y git
Dette vil bli utført når bildet bygges og vil tillate deg å bruke git i de følgende instruksjonene.
Gitmike-temaet: de anbefaler å klone repoet deres direkte
RUN git clone https://github.com/makotokw/redmine-theme-gitmike.git public/themes/gitmike
Linjen vil lagre det klonede prosjektet i riktig mappe public/themes
Skjul sidepanelet: Samme prosedyre kan brukes på utvidelser. Denne krever ingenting annet enn å plassere den klonede mappen i utvidelsesmappen
RUN git clone https://gitlab.com/bdemirkir/sidebar_hide.git plugins/sidebar_hide
Clipboard Image paste: Dette virker også som den typiske prosedyren, klon repoet og du er klar til å gå
RUN git clone https://github.com/RubyClickAP/clipboard_image_paste.git plugins/clipboard_image_paste
Men hvis du leser litt mer vil du se at "det anbefales å installere RMagick-gem, ellers vil vedlagte bilder ikke vises i eksporterte PDF-filer". Så hvordan gjør vi dette? Det burde være like enkelt som
RUN gem install rmagick
men du vet sannsynligvis at gem må bygges før det kan installeres, så du må installere noen pakker før du installerer gem. Linjen du virkelig trenger er
RUN apt install -y build-essential imagemagick libmagickcore-dev libmagickwand-dev ruby-dev \
&& gem install rmagick
Alt i en kommando, delt i to linjer for lesbarhet.
Den opprinnelige forfatteren av denne utvidelsen gir ikke en versjon for Redmine 4, men en søk etter utvidelsesnavnet på GitHub førte meg til et prosjekt som gjør det: RubyClickAP/clipboard_image_paste.
Legge til en utvidelse eller et tema fra en nedlastet kilde
A1-temaet er et godt eksempel for å illustrere tilfellene der du har kilden, men ikke en URL å laste ned under byggeprosessen. Ett alternativ i slike tilfeller er å gi kilden til byggeprosessen. På den måten blir innholdet lagt til bildet uten å laste det ned
COPY a1 public/themes/a1
Dette krever at a1-mappen er på samme sted som Dockerfilen.
Nå er du klar til å bygge bildet ditt, så åpne en terminal der Dockerfilen din er og kjør
docker build -t my-redmine .
Når det er bygget, kan du kjøre bildet med
docker run -it -p 3000:3000 --name my-redmine my-redmine
Gå videre og åpne http://localhost:3000 for å se ditt tilpassede Redmine!
Redmine etter tilpasning
Noen tips for å legge til flere utvidelser
For å prøve ut nye utvidelser er det alltid bedre å bruke en ny Redmine-container. Det er slik jeg oppdaget at rmagick krever at noen pakker blir installert. Først kjør en kastbar instans av Redmine med
docker run --rm -d -p 3000:3000 --name test-redmine redmine
og deretter gå inn i instansen med
docker exec -it test-redmine bash
Der kan du installere OS-pakker, gems eller kjøre migreringer. Bare husk trinnene slik at du kan legge dem til Dockerfilen din!
Last opp ditt egendefinerte bilde til Docker Hub
Bildet du nettopp bygget er kun tilgjengelig i ditt lokale miljø. Hva om du ønsker å gjøre det tilgjengelig for andre, la oss si for alle? Selvfølgelig kan du laste opp Dockerfilen og relaterte filer til et git-repo, og de interesserte kan bygge bildet selv. Men Docker lar deg også laste opp det bygde bildet til deres register. For dette, opprett en konto på hub.docker.com og opprett også et repository for bildet ditt. Deretter logger du inn i terminalen slik
docker login
Merk bildet ditt slik at det kan lastes opp til ditt repo
docker tag my-redmine:latest lcofre/redmine:latest
og push det slik
docker push lcofre/redmine:latest
Docker-bildet i Docker-registeret
Nå kan hvem som helst prøve ut bildet ditt ved å gjøre
docker run -it -p 3000:3000 --name my-redmine lcofre/redmine
Det er det! Slik går du fra en standard Redmine-installasjon til en tilpasset versjon som er tilgjengelig i Docker-registeret. Vennligst del dine kommentarer eller spørsmål nedenfor.
Redusere størrelsen på Docker-bildet
Du vil oppdage at Dockerfilen i repoet har slått sammen mange linjer til én. Dette er en anbefaling fra Docker for å lage mindre bilder. Du kan finne den anbefalingen og andre på https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
En annen anbefaling for å redusere den endelige størrelsen på bildet er å bruke alpine-versjonen av Redmine
FRA Redmine:alpine
Alpine er en annen Linux-distribusjon. I stedet for å bruke apt for å installere pakker, må du bruke apk.
Et siste tips: pakkene vi installerte med apt i Dockerfilen er ikke lenger nødvendige etter at bildet er bygget. Du kan følge beste praksis ved å bruke flertrinnsbygg: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#use-multi-stage-builds
Praksisen med å holde et lite Docker-bilde er spesielt nyttig når antallet instanser skal skaleres opp, men det reduserer også angrepsflaten på bildet ditt.

Den ultimate Redmine-oppgraderingen? Enkel.
Få alle kraftige verktøy for perfekt prosjektplanlegging, -styring og -kontroll i én programvare.