en
Lingua
  • en
  • de
  • fr
  • es
  • br
  • ru
  • jp
  • kr
traduzione AI
  • ee
  • ae
  • cn
  • vn
  • id
  • eu
  • il
  • gr
  • no
  • fi
  • dk
  • se
  • tr
  • bg
  • nl
  • it
  • pl
  • hu
  • ro
  • ua
  • cs

Come creare la tua immagine Docker Redmine personalizzata

6/16/2020
8 minuti
Lukaš Beňa
Redmine è uno degli strumenti più popolari per la gestione dei progetti e il monitoraggio dei problemi. Se l'hai provato o hai dovuto installarlo in un ambiente di produzione, probabilmente sai anche che esiste un'immagine docker ufficiale che semplifica notevolmente l'installazione e il ridimensionamento per ambienti ad alta richiesta.

Redmine prima della personalizzazione

Note:: La finestra mobile nativa di Redmine può essere trovata su https://hub.docker.com/_/redmine. Qui puoi anche trovare buone istruzioni su come popolare un database esterno e montare cartelle esterne (per poter installare i plugin).

Se sei come me e preferisci vedere direttamente il codice per la creazione di un'immagine Redmine Docker personalizzata, puoi andare a github.com/lcofre/redmine e controlla il Dockerfile.

L'immagine Redmine Docker è un buon punto di partenza, anche se probabilmente vorrai personalizzarla con plugin e temi di tuo gradimento. In questo how-to, costruiremo un'immagine Docker basata su quella ufficiale, aggiungeremo alcuni temi e plugin e la cariceremo nel registro docker.

Per semplicità, non useremo un database esterno ma un database interno nel contenitore Redmine stesso. Per un ambiente di produzione, tuttavia, è consigliabile impostare un contenitore di archiviazione dedicato.


Plugin e temi

Abbiamo scelto alcuni plugin e temi per illustrare vari modi di aggiungerli a Redmine:

  • Nascondi la barra laterale, un plug-in per consentire più spazio sullo schermo, soprattutto durante la scrittura di problemi
  • Incolla appunti, per allegare schermate incollando dagli appunti invece di selezionare un file
  • A1 ed Mike, due temi per cambiare l'aspetto dell'interfaccia utente

Escludiamo i plug-in che richiedono una migrazione del database, poiché è necessario un database preesistente. Commenta di seguito se devi installare un plug-in che necessita di migrazioni, poiché abbiamo buone idee per te.


Scrivere il Dockerfile

Un file Docker è una ricetta su come creare un'immagine Docker. Il primo fatto che impareremo qui è che dobbiamo basare la nostra immagine su qualche altra immagine, quindi useremo quella ufficiale per Redmine

DA Redmine

Questa prima riga del Dockerfile si baserà sull'immagine più recente e più grande, 4.1.0 al momento della scrittura. Poiché ciò afferrerà qualsiasi versione più recente, potresti preferire utilizzare una versione specifica per evitare nuove versioni impreviste che potrebbero interrompere la creazione di questa immagine

DA Redmine: 4.1.0


Usare Git per ottenere i componenti

Nella maggior parte dei casi, temi e plugin hanno repository git in cui è possibile scaricare il codice più recente. Questo è il caso dei seguenti tre componenti.

L'immagine di base di Redmine arriva senza git, ma possiamo aggiungerla all'immagine in questo modo

ESEGUI per installare -y git

Questo verrà eseguito quando l'immagine viene creata e ti permetterà di usare git nelle seguenti istruzioni.

Tema Gitmike: consigliano di clonare direttamente il loro repository

ESEGUI clone git https://github.com/makotokw/redmine-theme-gitmike.git pubblico / themes / gitmike

La riga salverà il progetto clonato nella cartella / temi appropriati

Nascondi barra laterale: La stessa procedura può essere applicata ai plugin. Questo non richiede altro che l'inserimento della cartella clonata nella cartella dei plugin

ESEGUI clone git https://gitlab.com/bdemirkir/sidebar_hide.git plugins / sidebar_hide

Copia immagine negli Appunti: Anche questa sembra la procedura tipica, clona il repository e sei a posto

ESEGUI clone git https://github.com/RubyClickAP/clipboard_image_paste.git plugins / clipboard_image_paste

Ma se tu leggi un po 'di più vedrai che "si consiglia di installare RMagick gem, altrimenti le immagini allegate non verranno mostrate nei file PDF esportati". Quindi come possiamo farlo? Dovrebbe essere facile come

RUN gem installa rmagick

ma probabilmente sai che la gemma deve essere costruita prima che possa essere installata, quindi devi installare alcuni pacchetti prima di installare la gemma. La linea di cui hai veramente bisogno è

ESEGUI installa -y build-essential imagemagick libmagickcore-dev libmagickwand-dev ruby-dev \

       && gem installa rmagick

Tutto in un comando, separato in due righe per leggibilità.

L'autore originale di questo plugin non fornisce una versione per Redmine 4, ma una ricerca del nome del plugin in GitHub mi ha portato a un progetto che: RubyClickAP / clipboard_image_paste.


Aggiunta di un plug-in o tema da una fonte scaricata

I Tema A1 è un buon esempio per illustrare i casi in cui hai la fonte, ma non un URL da scaricare durante il processo di compilazione. Un'opzione in casi come questo è fornire la fonte al processo di costruzione. In questo modo il contenuto viene aggiunto all'immagine senza scaricarlo

COPIA a1 pubblico / temi / a1

Ciò richiede che la cartella a1 si trovi nello stesso posto in cui si trova Dockerfile.

Ora sei pronto per creare la tua immagine, quindi apri un terminale dove si trova il tuo Dockerfile ed eseguilo

finestra mobile build -t my-redmine.

Una volta costruito, sarai in grado di eseguire la tua immagine con

docker run -it -p 3000: 3000 --name my-redmine my-redmine

Vai avanti e apri http: // localhost: 3000 per vedere il tuo Redmine personalizzato!

Redmine dopo la personalizzazione


Alcuni consigli per aggiungere altri plugin

Per provare nuovi plugin, è sempre meglio usare un nuovo contenitore Redmine. È così che ho capito che rmagick richiede l'installazione di alcuni pacchetti. Innanzitutto, esegui un'istanza scartabile di Redmine con

docker run --rm -d -p 3000: 3000 --name test-redmine redmine

e quindi inserire l'istanza con

docker exec -it test-redmine bash

Lì puoi installare pacchetti OS, gemme o eseguire migrazioni. Basta ricordare i passaggi in modo da poterli aggiungere al tuo Dockerfile!


Caricamento dell'immagine personalizzata su Docker Hub

L'immagine che hai appena creato è disponibile solo per il tuo ambiente locale. E se vuoi renderlo disponibile ad altri, diciamo a tutti? Ovviamente, puoi caricare il Dockerfile e i file correlati su un repository git e chi è interessato può creare l'immagine da solo. Ma Docker ti consente anche di caricare l'immagine creata nel loro registro. Per questo, crea un account in hub.docker.com e crea anche un repository per la tua immagine. Quindi accedi al terminale in questo modo

login docker

Contrassegna la tua immagine in modo che possa essere caricata nel tuo repository

tag docker my-redmine: latest lcofre / redmine: latest

e spingilo così

docker push lcofre / redmine: ultimo

L'immagine Docker nel registro Docker

Ora chiunque può provare la tua immagine facendo

docker run -it -p 3000: 3000 --name my-redmine lcofre / redmine

Questo è tutto! Ecco come passare da un'installazione Redmine standard a una versione personalizzata accessibile nel registro Docker. Per favore condividi i tuoi commenti o domande qui sotto.


Ritaglio della dimensione dell'immagine Docker

Scoprirai che il Dockerfile nel repository unì molte linee in una. Questa è una raccomandazione Docker per creare immagini più piccole. Puoi trovare quel consiglio e altri in https://docs.docker.com/develop/develop-images/dockerfile_best-practices/

Un'altra raccomandazione per ridurre la dimensione finale dell'immagine è quella di utilizzare la versione alpina di Redmine

DA Redmine: alpino

Alpine è una distribuzione Linux diversa. Invece di usare apt per installare i pacchetti devi usare apk.

Un ultimo consiglio: i pacchetti che abbiamo installato con apt nel Dockerfile non sono più necessari dopo la creazione dell'immagine. Puoi seguire le migliori pratiche di utilizzo di build multi-stage: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#use-multi-stage-builds

La pratica di mantenere un'immagine Docker di piccole dimensioni aiuta soprattutto quando si aumenta il numero di istanze, ma riduce anche la superficie di attacco sull'immagine.

L'ultimo aggiornamento di Redmine? Facile.

Ottieni tutti gli strumenti potenti per una perfetta pianificazione, gestione e controllo del progetto in un unico software.

Scopri Easy Redmine

Prova Easy Redmine in 30 giorni di prova gratuita

Funzionalità complete, protezione SSL, backup giornalieri, nella tua geolocalizzazione