Nasıl Özel Redmine Docker Görüntüsü Oluşturulur

6/16/2020
8 minutes
Lukáš Beňa.
Redmine, proje yönetimi ve sorun takibi için en popüler araçlardan biridir. Eğer denediyseniz veya üretim ortamında kurmanız gerektiyse, muhtemelen yüksek talep ortamlarında kurulumu ve ölçeklendirmeyi büyük ölçüde kolaylaştıran resmi bir docker görüntüsü olduğunu da biliyorsunuz.

Özelleştirmeden önceki Redmine

Not: Redmine'in yerel docker sürümü https://hub.docker.com/_/redmine adresinde bulunabilir. Burada, harici bir veritabanını nasıl dolduracağınızı ve harici klasörleri nasıl bağlayacağınızı (eklentileri yükleyebilmek için) iyi talimatlar bulabilirsiniz.

Eğer benim gibiyseniz ve özel bir Redmine Docker görüntüsü oluşturmak için kodu doğrudan görmeyi tercih ederseniz, github.com/lcofre/redmine adresine gidip Dockerfile'ı kontrol edebilirsiniz.

Redmine Docker görüntüsü iyi bir başlangıç noktasıdır, ancak muhtemelen istediğiniz eklentiler ve temalarla özelleştirmek istersiniz. Bu nasıl yapılır adlı rehberde, resmi olanına dayanan bir Docker görüntüsü oluşturacak, bazı temalar ve eklentiler ekleyecek ve bunu docker kayıt defterine yükleyeceğiz.

Basitlik açısından, harici bir veritabanı yerine Redmine konteynerinin içinde bir dahili veritabanı kullanmayacağız. Bununla birlikte, üretim ortamı için ayrı bir depolama konteyneri kurmanız önerilir.


Eklentiler ve Temalar

Redmine'e eklemek için çeşitli yolları göstermek için birkaç eklenti ve tema seçtik:

  • Kenar çubuğunu gizle, özellikle sorunları yazarken daha fazla ekran alanı sağlamak için bir eklenti
  • Panodan yapıştır, bir dosya seçmek yerine panodan ekran görüntüleri eklemek için
  • A1 ve Gitmike, arayüzün görünümünü değiştiren iki tema

Veritabanı göçü gerektiren eklentileri hariç tutuyoruz, çünkü önceden var olan bir veritabanına ihtiyacınız var. Göç gerektiren bir eklenti yüklemek isterseniz lütfen aşağıya yorum yapın, size iyi fikirlerimiz var.


Dockerfile'ı Yazma

Bir Dockerfile, bir Docker görüntüsünü nasıl oluşturacağımız hakkında bir reçetedir. Burada öğreneceğimiz ilk gerçek, görüntümüzü başka bir görüntüye dayandırmamız gerektiğidir, bu yüzden Redmine için resmi olanı kullanacağız

FROM Redmine

Dockerfile'ın bu ilk satırı, görüntümüzü yazma anında en son ve en iyi sürüme dayandıracaktır. Bu, en son sürümü alacağından beklenmedik yeni sürümleri önlemek için belirli bir sürüm kullanmanız tercih edilebilir

FROM Redmine:4.1.0


Using Git to get the components

In most cases, themes and plugins have git repositories where we can download the latest code. This is the case for the following three components.

The base Redmine image comes without git, but we can add it to the image this way

RUN apt install -y git

This will be executed when the image is built and will allow you to use git in the following instructions.

Gitmike theme: they recommend cloning their repo directly

RUN git clone https://github.com/makotokw/redmine-theme-gitmike.git public/themes/gitmike

The line will save the cloned project in the appropriate folder public/themes

Hide Sidebar: The same procedure can be applied to plugins. This one requires nothing more than placing the cloned folder in the plugins folder

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

Clipboard Image paste: This also seems the typical procedure, clone the repo and you are good to go

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

But if you read a bit more you'll see that "it’s recommended to install RMagick gem, otherwise attached images will not show in exported PDF files". So how do we do this? It should be as easy as

RUN gem install rmagick

but you probably know that the gem needs to be built before it can be installed, so you need to install some packages before installing the gem. The line you really need is

RUN apt install -y build-essential imagemagick libmagickcore-dev libmagickwand-dev ruby-dev \

       && gem install rmagick

All in one command, separated in two lines for readability.

The original author of this plugin does not provide a version for Redmine 4, but a search of the plugin name in GitHub landed me on a project that does: RubyClickAP/clipboard_image_paste.


Adding a plugin or theme from a downloaded source

The A1 theme is a good example to illustrate the cases where you have the source, but not a URL to download during the build process. One option in cases like this is to provide the source to the building process. That way the content is added to the image without downloading it

COPY a1 public/themes/a1

This requires the a1 folder to be in the same place the Dockerfile is.

Now you are ready to build your image, so open a terminal where your Dockerfile is and execute

docker build -t my-redmine .

Once built you'll be able to run your image with

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

Go ahead and open http://localhost:3000 to see your custom Redmine!

Redmine after customization


Some tips to add more plugins

In order to try out new plugins, it’s always better to use a fresh Redmine container. That is how I realized rmagick requires some packages to be installed. First, run a discardable instance of Redmine with

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

and then enter the instance with

docker exec -it test-redmine bash

There you can install OS packages, gems or run migrations. Just remember the steps so you can add them to your Dockerfile!


Docker Hub'a özel resminizi yükleme

Yeni oluşturduğunuz resim yalnızca yerel ortamınızda kullanılabilir. Başkalarına da kullanılabilir hale getirmek isterseniz, diyelim ki herkese, Dockerfile ve ilgili dosyaları bir git deposuna yükleyebilir ve ilgilenenler resmi kendileri oluşturabilir. Ancak Docker, oluşturduğunuz resmi kayıt defterine yüklemenize de izin verir. Bunun için hub.docker.com'da bir hesap oluşturun ve resminiz için bir depo da oluşturun. Ardından terminalde şu şekilde oturum açın

docker login

Resminizi depoya yükleyebilmesi için etiketleyin

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

ve şu şekilde itin

docker push lcofre/redmine:latest

Docker kayıt defterindeki Docker resmi

Artık herkes resminizi deneyebilir

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

İşte bu kadar! Bu, standart bir Redmine kurulumundan Docker kayıt defterinde erişilebilir bir kişiselleştirilmiş sürüme nasıl geçeceğinizdir. Lütfen yorumlarınızı veya sorularınızı aşağıya paylaşın.


Docker resim boyutunu kırpma

Depodaki Dockerfile birçok satırı birleştirdi. Bu, daha küçük resimler yapmak için bir Docker önerisidir. Bu öneriyi ve diğerlerini https://docs.docker.com/develop/develop-images/dockerfile_best-practices/ adresinde bulabilirsiniz.

Resmin son boyutunu azaltmak için başka bir öneri, Redmine'in alpine sürümünü kullanmaktır

FROM Redmine:alpine

Alpine farklı bir Linux dağıtımıdır. Paketleri yüklemek için apt yerine apk kullanmanız gerekmektedir.

Son bir ipucu: Dockerfile'da apt ile yüklediğimiz paketlere artık ihtiyaç yoktur. Çoklu aşamalı yapıları kullanma en iyi uygulamasını takip edebilirsiniz: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#use-multi-stage-builds

Küçük boyutlu bir Docker resmi tutma uygulaması, özellikle örnek sayısını ölçeklendirirken yardımcı olur, ayrıca resminizdeki saldırı yüzeyini azaltır.

Redmine yükseltmesi için en iyi seçenek mi? Kolay.

Tüm güçlü araçları tek bir yazılımda mükemmel proje planlama, yönetim ve kontrol için edinin.

Kolay Redmine'i Keşfedin

Easy Redmine'ı 30 gün ücretsiz deneyin

Tam özellikli, SSL korumalı, günlük yedeklemeler, bulunduğunuz konumda