Gitlab’ı Docker Olarak Kurmak

MEHMET ARİF EMRE ŞEN
Yazilim VIP
Published in
4 min readJul 12, 2018

GitLab oldukça popular bir açık kaynaklı versiyon kontrol sistemi. Ayrıca on-premise(self-hosted) sürümüde mevcut. Bu yazımda GitLab’ın Community Edition versiyonun self-hosted olarak docker ile nasıl kurulduğunu aşama aşama anlatıyor olacağım.

GitLab ile Docker kurulumunu aşağıda yazılan bir kaç satır basit komutla tamamladıktan sonra kendi GitLab sunucunuz emrinize amade bir şekilde sizi bekliyor olacak.

Eğer ilk defa Docker veya GitLab kullanıyorsanız, kurulum aşamasına, en son yazının devamını okuduktan sonra geçerseniz sizin için daha faydalı olacaktır.

GitLab Container Kurlumu

Yapılması gerekn adımlar kısaca aşağıdaki gibidir:

  1. Docker CLI kurulumu — Ubuntu 16.04

sudo apt install docker.io

2. GitLab CE Container Deploy etmek

örnek GitLab’ın

  • koşacağı sunucunun adresi : gitlab.example.com
  • web uygulamasının çalışacağı port : 30080
  • shell bağlantısı yapılacak portu : 30022

gerekli GitLab Container’ını oluşturmak için gerekli komut aşağıdaki gibidir:

sudo docker run --detach --name gitlab \
--hostname gitlab.example.com \
--publish 30080:30080 \
--publish 30022:22 \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com:30080'; gitlab_rails['gitlab_shell_ssh_port']=30022;" \
gitlab/gitlab-ce:latest

Komutu çalıştırdıktan sonra öncelikle Docker için gerekli GitLab imajı DockerCLI tarafından indirilecektir.

GitLab Docker Imajı İndirme

İndirme işlemi tamamlandıktan sonra aşağıdaki gibi bir çıktı göreceksiniz. En alttaki 18aa8… diye devam eden id GitLab’ın çalıştığı container id değeridir.

GitLab Docker Imajı İndirme Tamamlandı

Eğer buna benzer bir çıktı aldıysanız kurulum tamamlanmış demektir. Şimdi docker ps komutunu çalıştıralım ve şu an çalışan Containerları listeleyelim. Çıktı aşağıdaki gibi olucaktır.

Container List

Eğer container STATUS running olarak görünüyorsa GitLab çalışıyor demektir.

http://<gitlab_host>:<your_port>/ adresinden web arayüzüne ulaşabilirsiniz.

Not: İlk defa web arayüzünü açtığınızda size root kullanıcısı için şifre oluşturmanızı isteyecektir.

Container’ı başlatmak durdurmak yada silmek istediğimizde Container ID değerini kullanmanız yeterli olucaktır.

Durdurmak için :docker stop <CONTAINER ID>

Başlatmak için :docker start <CONTAINER ID>

Silmek için :docker rm -vf <CONTAINER ID>

Neden Docker?

Staj yaptığım şirkette bulut tabanlı microservis projesine dahil oldum. Yapı olarak Docker teknolojisi microservis mantığına uygun bir teknolojiydi. Bu sebeple takım olarak Docker teknolojini kullanma kararı aldık.

Şirkette versiyon kontrol sistemi olarak GitLab kullanılıyordu. Yeni sistem bulut üstünde çalışan bir sistem olacak, yani bulut teknolojisine geçiş yapılacaktı. Çalışan microservislerin yanında GitLab’ı da self-hosted olarak Container üstünde koşturma kararı aldık.

Sonuç olarak GitLab’ı bir Container üstünde çalıştırmam gerekiyordu. Bu konu ile ilgili araştırmaya başladım ve bir takım sonuçlara vardım. Docker nedir? GitLab nedir? Bunlara kısaca değinmek istiyorum.

Docker Nedir?

Docker, dünyada en çok kullanılan yazılım konteynerleştirme platformudur. Konteynerleştirme konteyner içine koyma anlamına gelir. Docker, Linux Kernel’e 2008 yılında eklenen Linux Containers (LXC) üzerine kurulu bir teknolojidir.

Docker Linux Kernel’inden destek alarak ortaya çıkan ve Linux İşletim Sistemi üzerinde çalışan bir teknoloji. Docker temel iki parçadan oluşmaktadır:

  1. Linux Kernel’la direkt iletişim halinde olan Docker Daemon
  2. Daemon (Motor) ile iletişim kurmamıza olanak tanıyan Docker CLI (Command-Line Interface)

Linux’ta hem Docker Daemon hem de Docker CLI doğal olarak direkt Linux üzerinde koşmaktadır.

Docker Daemon Windows Mimarisi

Windows ve Mac OS X’te ise Docker CLI Windows ve Mac OS X işletim sistemleri üzerinde koşmakta, Docker Daemon ise bu işletim sistemlerinde bir Hypervisor yardımıyla çalıştırılan Linux üzerinde koşmaktadır. Yandaki görselde mimari gösterilmiştir. Bu da Docker teknolojisinin nasıl platform bağımsız olarak çalıştığını açıklıyor.

Windows ve Mac OS X’te Docker CLI ve Docker Daemon TCP ile haberleşmektedirler. Docker CLI’dan verilen komutlar TCP ile Engine’e iletilmekte ve işlenip cevaplanmaktadır. Aralarında TCP haberleşmesi bulunduğundan aralarında TCP bağlantısı kurulabilen herhangi bir Docker CLI (Client) ile Docker Daemon’i konuşturmak mümkündür. İşte anlatılan bu yöntemle Windows ve Mac OS X’te Docker çalıştırmak mümkün hale gelmektedir. Ek, Linux’ta default olarak aynı makine üzerindeki CLI ile Engine’in Unix Socket üzerinden konuşur.

Docker hakkında daha detaylı bilgi için aşağıdaki linkten yararlanabilirsiniz.

GitLab

Öncelikle Git teknolojisi hakkında bilgi vermek daha doğru olur

  • Günümüzde en çok kullanılan version kontrol sistemidir ve hızlı bir şekilde sürüm kontrolü için standart haline gelmektedir.
  • Dağıtılmış bir version kontrol sistemidir, kodunuzun local kopyası tam bir sürüm kontrol repsotriy anlamına gelir. Bu tamamen işlevsel yerel depolar, çevrimdışı veya uzaktan çalışmayı kolaylaştırır.
  • Çalışmanızı yerel olarak gerçekleştirirsiniz ve daha sonra repository’deki kopyanızı sunucudaki kopyayla eşitlersiniz.
  • Bu paradigma, müşterilerin yeni bir kod sürümü oluşturmadan önce bir sunucuyla kodu senkronize etmesi gereken merkezi sürüm kontrolünden farklıdır.

Git hakkında daha detaylı bilgiyi aşağıdaki linkte bulabilirsiniz :

Git teknolojisini anladıktan sonra GitLab tarafından devam etmek istiyorum. GitLab açık kaynak olarak geliştirilen web tabanlı Git-Repository yöneticisidir. Ek olarak proje yönetimi için gerekli olan araç gereçler sahiptir.

  • wiki
  • issue tracking vb

Aşağıdaki Linkten GitLab’ın sunduğu özellikler hakkında detaylı bilgi alabilirsiniz.

--

--