Makaleyi Paylaş

Docker / Öne Çıkanlar / Open Source

Docker ile Redmine Kurulumu

Redmine, proje yönetiminde/takibinde en çok kullanılan web uygulamalarından biri. Tema ve eklenti desteği sayesinde, Redmine’a alışmak ve özelleştirmek hızlı ve kolay bir şekilde gerçekleştirilebiliyor. Bu yazıda, Redmine’ın Docker ile nasıl kurulabileceğine bakacağız. Veritabanı olarak Postgres kullanacağız. Stateful uygulamalara ait dosyaları, sunucu üzerinde oluşturacağımız volumelarda tutacağız.

Docker ile Manuel Kurulum

Network Oluşturmak

Postgres ile Redmine arasındaki iletişimin sağlanması için bir network oluşturarak başlayacağız. Komutları tek bir makine üzerinde çalıştıracağımız için bridge network oluşturacağız:

$ docker network create --driver bridge redmine_network

Volume Oluşturmak

Daha önce de belirttiğimiz gibi, stateful uygulamalar için volume oluşturacağız. Containerlar silindiğinde dosyaların otomatik olarak silinmemesi ve uygulamaların durumlarının tutulabilmesi için bu volumelara ihtiyacımız var:

$ docker volume create postgres-data
$ docker volume create redmine-data

Hangi volume’un hangi dizine ait olduğunu container oluştururken Docker’a söyleyeceğiz.

Veritabanını Başlatmak

Redmine’ı Postgres ile birlikte kuracağımızı söylemiştik. Şimdi, Postgres’i yukarıda oluşturduğumuz volume ile başlatalım:

docker container run -d                         \ 
      --name postgres                           \ 
      --network redmine_network                 \ 
      -v postgres-data:/var/lib/postgresql/data \ 
      --restart always                          \ 
      -e POSTGRES_PASSWORD='password'           \ 
      -e POSTGRES_DB='redmine'                  \ 
      postgres:latest

Redmine’ı Başlatmak

Son olarak, az önce oluşturduğumuz veritabanının adresini ve giriş bilgilerini kullanarak Redmine’ı başlatabiliriz:

docker container run -d                         \ 
    --name redmine                              \ 
    --network redmine_network                   \ 
    -p 80:3000                                  \ 
    --restart always                            \ 
    -v redmine_data:/usr/src/redmine/files      \ 
    -e REDMINE_DB_POSTGRES='postgres'           \ 
    -e REDMINE_DB_DATABASE='redmine'            \ 
    -e REDMINE_DB_PASSWORD='password'           \ 
    redmine:latest

Bunun ardından, tarayıcımızı açıp IP adresini yazarak yaptığımız kurulumu görebiliriz. Varsayılan kullanıcı adı ve parola olarak admin-admin kullanabiliriz.

Docker Compose ile Kurulum

Yukarıda uyguladığımız aşamaların tamamını Docker Compose kullanarak tek bir YAML dosyası içerisinde “declarative” olarak tanımlayabiliriz. Bu durumda docker-compose.yml dosyasının içeriği şöyle olacaktır:

version: '3.1'
services:
  postgres:
    image: postgres:latest
    restart: always
    networks:
      - redmine
    volumes:
      - postgres-data:/var/lib/postgresql/data
    environment:
      - 'POSTGRES_PASSWORD=password'
      - 'POSTGRES_DB=redmine'
  redmine:
    image: redmine:latest
    restart: always
    networks:
      - redmine
    volumes:
      - redmine-data:/usr/src/redmine/files
    ports:
      - 80:3000
    environment:
      - 'REDMINE_DB_POSTGRES=postgres'
      - 'REDMINE_DB_DATABASE=redmine'
      - 'REDMINE_DB_PASSWORD=password'
volumes:
  postgres-data:
  redmine-data:
networks:
  redmine:
    driver: bridge

Bu dosyayı oluşturduktan sonra gereken tek şey, şu komutu kullanarak yayına almak olacaktır(bu aşamada dosya içinde parola vb. alanları da düzenleyebilirsiniz):

docker-compose up

Sonuç

Redmine’ın PostgreSQL ile kurulumunu, Docker ve Docker Compose kullanarak ayrı ayrı yaptık. Manuel kurulum için hazır Docker imajları kullanılarak yapılacak kurulumu tanımladıktan sonra, aynı altyapının Docker Compose ile tek bir dosya içerisinde nasıl tanımlanacağını gördük. Tüm servislerin, networklerin ve volume’ların tek bir dosyada tanımlanması; servislerin tamamının veya bir kısmının tek bir komutla ayağa kaldırılabilmesi; servislere ait logların tek bir ekrandan canlı takip edilebilmesi bu yöntemin artılarından birkaç tanesi olarak göze çarpıyor. Test dışındaki amaçlarla bu imajları ve yöntemleri kullanırken, production öncesindeki gerekli tüm önlemleri aldığınızdan emin olmayı unutmayın.

Makaleyi Paylaş

Cevap bırakın