Hur du skapar din anpassade Redmine Docker-bild
Redmine innan anpassning
Anmärkningar: Redmine native docker finns på https://hub.docker.com/_/redmine. Här kan du också hitta bra instruktioner om hur du fyller i en extern databas och monterar externa mappar (för att kunna installera plugins).
Om du är som jag och föredrar att direkt se koden för att skapa en anpassad Redmine Docker-bild kan du gå till github.com/lcofre/redmine och kontrollera Dockerfile.
Redmine Docker-bilden är en bra utgångspunkt, även om du förmodligen vill anpassa den med plugins och teman som du vill. I det här sättet kommer vi att bygga en Docker-bild baserad på den officiella bilden, lägga till några teman och plugins och ladda upp den till dockningsregistret.
För enkelhets skull använder vi inte en extern databas utan en intern databas i själva Redmine-behållaren. För en produktionsmiljö rekommenderas det dock att skapa en dedicerad lagringsbehållare.
Plugins och teman
Vi valde några plugins och teman för att illustrera olika sätt att lägga till dem till Redmine:
- Dölj sidofältet, en plugin för att möjliggöra mer skärmutrymme, särskilt när du skriver problem
- Klistra in urklipp, för att bifoga skärmdumpar som klistras in från urklipp i stället för att välja en fil
- A1 och Gitmike, två teman för att ändra UI: s utseende
Vi utesluter plugins som kräver en databasmigrering, eftersom du behöver en befintlig databas. Kommentera nedan om du behöver installera ett plugin som behöver migrera, eftersom vi har bra idéer för dig.
Skriva Dockerfile
En Dockerfile är ett recept på hur man bygger en Docker-bild. Det första faktum som vi kommer att lära oss här är att vi måste basera vår bild på någon annan bild, så vi använder den officiella för Redmine
FRÅN Redmine
Den här första raden i Dockerfile kommer att basera eller avbilda den senaste och bästa bilden, 4.1.0 i skrivande stund. Eftersom detta kommer att ta tag i vilken version som är senaste, kanske du föredrar att använda en specifik version för att undvika oväntade nya versioner som kan bryta bildens uppbyggnad
FRÅN Redmine: 4.1.0
Använda Git för att få komponenterna
I de flesta fall har teman och plugins gitförvar där vi kan ladda ner den senaste koden. Detta är fallet för följande tre komponenter.
Basen Redmine-bilden kommer utan git, men vi kan lägga till den till bilden på detta sätt
KÖR apt installation -y git
Detta kommer att köras när bilden är byggd och låter dig använda git i följande instruktioner.
Gitmike-tema: de rekommenderar att klona sin repo direkt
KÖR GIT-klon https://github.com/makotokw/redmine-theme-gitmike.git offentliga / themes / gitmike
Linjen sparar det klonade projektet i lämplig mapp public / teman
Dölj sidofältet: Samma procedur kan tillämpas på plugins. Den här kräver inget annat än att placera den klonade mappen i plugin-mappen
KÖR GIT-klon https://gitlab.com/bdemirkir/sidebar_hide.git plugins / sidebar_hide
Urklipp Bildklistra: Detta verkar också vara den typiska proceduren, klona repo och du är bra att gå
KÖR GIT-klon https://github.com/RubyClickAP/clipboard_image_paste.git plugins / clipboard_image_paste
Men om du läs lite mer ser du att "det rekommenderas att installera RMagick-pärla, annars visas inte bifogade bilder i exporterade PDF-filer". Så hur gör vi det här? Det borde vara lika enkelt som
KÖR pärla installera rmagick
men du vet förmodligen att pärla måste byggas innan den kan installeras, så du måste installera några paket innan du installerar pärla. Linjen du verkligen behöver är
KÖRA apt install -y build-essential imagemagick libmagickcore-dev libmagickwand-dev ruby-dev \
&& gem installera rmagick
Allt i ett kommando, separerat i två rader för läsbarhet.
Den ursprungliga författaren till detta plugin ger inte en version för Redmine 4, men en sökning av plugin-namnet i GitHub landade mig på ett projekt som gör: RubyClickAP / clipboard_image_paste.
Lägga till ett plugin eller ett tema från en nedladdad källa
Smakämnen A1-tema är ett bra exempel för att illustrera de fall där du har källan, men inte en URL att ladda ner under byggprocessen. Ett alternativ i fall som detta är att ge källan till byggprocessen. På så sätt läggs innehållet till i bilden utan att ladda ner det
COPY a1 public / teman / a1
Detta kräver att mappen a1 är på samma plats som Dockerfile är.
Nu är du redo att bygga din bild, så öppna en terminal där din Dockerfile är och kör
docker build -t my-redmine.
När den är byggd kan du köra din bild med
docker run -it -p 3000: 3000 - namn min-redmine my-redmine
Gå vidare och öppna http: // localhost: 3000 för att se din anpassade Redmine!
Redmine efter anpassning
Några tips för att lägga till fler plugins
För att testa nya plugins är det alltid bättre att använda en ny Redmine-behållare. Det var så jag insåg att rmagick kräver att vissa paket installeras. Kör först en kasserbar instans av Redmine med
docker run --rm -d -p 3000: 3000 - namn test-redmine redmine
och ange sedan instansen med
docker exekvera -it test-redmine bash
Där kan du installera OS-paket, ädelstenar eller köra migreringar. Kom bara ihåg stegen så att du kan lägga till dem i din Dockerfile!
Ladda upp din anpassade bild till Docker Hub
Bilden du just har byggt är endast tillgänglig för din lokala miljö. Tänk om du vill göra det tillgängligt för andra, låt oss säga till alla? Naturligtvis kan du ladda upp Dockerfile och relaterade filer till en git repo, och de som är intresserade kan bygga bilden själva. Men Docker låter dig också ladda upp den inbyggda bilden till deras register. Skapa därför ett konto i hub.docker.com och skapa också ett arkiv för din bild. Logga in på terminalen så här
docker-inloggning
Tagga din bild så att den kan laddas upp till din repo
docker tag my-redmine: senaste lcofre / redmine: senaste
och tryck det så här
docker push lcofre / redmine: senaste
Docker-bilden i Docker-registret
Nu kan alla pröva din bild genom att göra
docker run -it -p 3000: 3000 - name my-redmine lcofre / redmine
Det är allt! Så här går du från en standard Redmine-installation till en personlig version som är tillgänglig i Docker-registret. Vänligen dela dina kommentarer eller frågor nedan.
Trimma Docker-bildstorleken
Du kommer att upptäcka att Dockerfile i repo förenade många linjer i en. Detta är en Docker-rekommendation för att göra mindre bilder. Du kan hitta det råd och andra i https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
En annan rekommendation för att minska den slutliga storleken på bilden är att använda den alpina versionen av Redmine
FRÅN Redmine: alpin
Alpine är en annan Linux-distribution. Istället för att använda apt för att installera paket måste du använda apk.
Ett sista tips: paketen vi installerade med apt i Dockerfile behövs inte längre efter att bilden har byggts. Du kan följa de bästa metoderna för att använda flerstegsbyggnader: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#use-multi-stage-builds
Övningen med att hålla en liten Docker-bild hjälper särskilt när du skalar upp antalet instanser, men minskar också attackytan på din bild.
Den ultimata Redmine -uppgraderingen? Lätt.
Få alla kraftfulla verktyg för perfekt projektplanering, hantering och kontroll i en programvara.