Translate This Page:
Docker Compose Nedir?
Docker Compose, çok kapsayıcılı Docker uygulamalarını tanımlayan ve çalıştıran bir araçtır. Docker Compose ile uygulamanızın servislerini tek bir YAML dosyasında tanımlayıp yapılandırır, ardından tek bir komut ile tüm uygulama servislerini oluşturup başlatabilirsiniz.
Geliştiriciler, üretim, hazırlık, geliştirme, test vb. aşamalardan konuşlandırıldığı tüm ortamlarda çalıştığı için Compose’u kullanmayı tercih eder. Ek olarak, Compose zengin özelliklere sahiptir:
- Compose ile, uygulamaları tek bir ana bilgisayardan birden çok yalıtılmış ortamda çalıştırabilirsiniz.
- Compose, uygulama hizmetleri tarafından kullanılan tüm birimleri korur.
- docker-compose ile yalnızca durumunu değiştiren containerları yeniden oluşturursunuz. Bu, geliştiricilerin ortamda çok hızlı değişiklik yapmasına olanak tanır.
- Geliştirici, kompozisyonlarını farklı ortamlar veya kullanıcılar için özelleştirmek üzere YAML dosyasındaki değişkenleri kullanabilir.
Docker Compose kullanım durumları
Docker Compose’un birkaç kullanım durumu vardır bunlar ;
- Geliştirme ortamları – docker-compose komutu, etkileşim kurulacak ortamlar oluşturur. Docker YAML dosyası, uygulama hizmetlerini ve bağımlılıklarını belgeler ve yapılandırır. docker-compose komutu, her bağımlılık için bir veya daha fazla kapsayıcı başlatır.
- Otomatikleştirilmiş test ortamları – Docker compose ile yalıtılmış test ortamlarını kolayca oluşturup yok edebilirsiniz.
- Tek ana bilgisayar dağıtımları – Tek bir ana bilgisayarda, tek bir YAML dosyası kullanarak birden çok dağıtım çalıştırabilirsiniz.
Docker Compose, üç ana süreci takip eder:
- Uygulama ortamını her yerde üretilecek şekilde bir Dockerfile üzerinde tanımlayın.
- Uygulama hizmetlerini, farklı ortamlarda birlikte çalışacak bir docker-compose.yml dosyasında tanımlayın.
- docker-compose up & docker-compose komutunu kullanarak uygulamanızı başlatın ve çalıştırın.
Docker Compose kurulumu
Yukarıdaki giriş Docker Compose’un neyle ilgili olduğu hakkında genel bir fikir vermek için yeterlidir. Docker Compose’u Ubuntu 22.04’ünüze yüklemek için sisteminizde Docker Engine’in kurulu olduğundan(bir önceli makalede detaylıca anlatılmıştır.) ve bir sudo(root) hesabına erişiminizin olduğundan emin olun. Ayrıca, istikrarlı bir internet bağlantınız olduğundan emin olun.
#İşleme başlamadan önce, sistemimizi güncelliyoruz. sudo apt update -y && sudo apt upgrade -y
Sistemimde yüklü olan Docker sürümünü doğrulayarak başlıyorum.
$ docker --version Docker version 23.0.1, build a5ee5b1
Aşağıdaki komutları çalıştırıyorum
$ARCH=$(uname -m) && [[ "${ARCH}" == "armv7l" ]] && ARCH="armv7" $sudo mkdir -p /usr/local/lib/docker/cli-plugins
Aşağıdaki komutla docker compose lates (son sürümünü) Linux makineme yüklüyorum.
sudo curl -SL "https://github.com/docker/compose/releases/latest/download/docker-compose-linux-${ARCH}" -o /usr/local/lib/docker/cli-plugins/docker-compose
Aşağıdaki komutları çalıştırarak gerekli dizine okuma yazma izinlerini tanımlıyorum.
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
Aşağıdaki komutla compose paket kurulumunu başlatıyorum.
apt install docker-compose
Docker Compose sürümünü doğrulayın
Kurulu sürümü kontrol etmek için aşağıdaki komutu verin.
$ docker compose version Docker Compose version v2.16.0
Docker Compose’un en son sürümünü başarılı bir şekilde yükledik.
Docker Compose kurulumunu test edin
Test amacıyla, bir metin düzenleyici kullanarak bir test docker-compose YAML dosyası oluşturacağım.
$ vim docker-compose.yml ## Add the contents below ## version: '3.7' services: web: image: nginx:alpine ports: - "8080:80" links: - php php: image: php:8-fpm
Compose “docker-compose up –d” komutunu çalıştırdığımda tüm imajları indirip tüm servislerin otomatik olarak kurulduğunu göreceksiniz.
$ docker-compose up –d Creating network "serdar_default" with the default driver Pulling php (php:8-fpm)... 8-fpm: Pulling from library/php 3f9582a2cbe7: Pull complete 0b95dc92ce55: Pull complete 3630ff9f8131: Pull complete 49efbc577363: Pull complete 689268bf5fec: Pull complete ae8237101120: Pull complete ee60935c79a8: Pull complete 3185df77a123: Pull complete 73005123d9a4: Pull complete e81ce3e25aa1: Pull complete Digest: sha256:98bd33db3ba6b72f59538edc0f58d713af9fd3ff65cde25c645a1138b2692e16 Status: Downloaded newer image for php:8-fpm Pulling web (nginx:alpine)... alpine: Pulling from library/nginx 63b65145d645: Pull complete 8c7e1fd96380: Pull complete 86c5246c96db: Pull complete b874033c43fb: Pull complete dbe1551bd73f: Pull complete 0d4f6b3f3de6: Pull complete 2a41f256c40f: Pull complete Digest: sha256:207332a7d1d17b884b5a0e94bcf7c0f67f1a518b9bf8da6c2ea72c83eec889b8 Status: Downloaded newer image for nginx:alpine Creating serdar_php_1 ... done Creating serdar_web_1 ... done
Çalışan composeları görüntüleme
“docker-compose ps” komutuyla 2 adet container otomatik oluşturulup tüm ayarları yapılandırılarak karşımıza geldi.
root@docker01:/home/serdar# docker-compose ps Name Command State Ports -------------------------------------------------------------------------------------------- serdar_php_1 docker-php-entrypoint php-fpm Up 9000/tcp serdar_web_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:8080->80/tcp,:::8080->80/tcp
Başlıca compose komutları
Compose altındaki tüm containerları durdurur
$ docker-compose stop
Compose altındaki tüm containerları başlatır
$docker-compose start
Compose altındaki tüm containerları duraklatır
$docker-compose pause
Compose altındaki tüm containerları duraklamayı kaldırır play eder.
$docker-compose unpause
Compose oluşturmak için kullanılır.
$docker-compose up
Compose ile oluşturulan tüm containerları ve compose neslerini siler.
$ docker-compose down
Daha fazlası için lütfen Resmi Docker Composer Belgelerini ziyaret edin . Bugünkü rehberimizin sonuna geldik. İşinize yaradığına inanıyorum. Docker Compose, son zamanlarda geliştiricilerin tek bir ana bilgisayardan birden çok uygulamayı dağıtabilmesi nedeniyle oldukça popülerlik kazandı. Tek bir docker-compose.yml dosyasıyla, yalıtılmış ana bilgisayarlarda çalışacak birden fazla servis tanımlayabilmeleri gerçeğiyle birleştiğinde büyük bir artı.