Docker Compose, çoklu konteyner Docker uygulamalarını tanımlamak ve yapılandırmak için kullanılan bir komut satırı aracıdır. Başka bir deyişle, Docker Compose birden fazla konteyneri birbirine bağlamak ve bir uygulamayı tek bir dosyadan dağıtmak için kullanılır. Docker Compose aracı geliştirme, test, ortam hazırlama ve CI (Sürekli Entegrasyon) iş akışında kullanılabilir.
Serverspace, önceden yüklenmiş "Docker" uygulaması ile bir sunucu oluşturabilirsiniz.
Örneğin, bir WordPress web sitesini bir konteynerin içine yerleştirmeniz gerekiyor ve bunun için bir web sunucusu konteyneri (Apache/Nginx) ve bir veritabanı konteyneri (MySQL/MariaDB) gerekiyor. Docker Compose ile docker-compose dosyasına birden fazla konteyneri kolayca dahil edebilirsiniz. Uygulamanızı tamamen işlevsel hale getirmek için ihtiyaç duyduğunuz diğer yapılandırmaları da ekleyebilirsiniz.
Bu eğitimde Docker Compose'un Docker içeren mevcut bir ana bilgisayara yüklenmesi incelenmekte ve docker-compose komutu ile konteynerlerin dağıtılmasına değinilmektedir.
Docker ile ana bilgisayarın zaten kurulu ve çalışır durumda olduğu varsayılmaktadır. Docker Compose Tool'u yükleme adımlarına geçelim.
Docker Compose yükleme adımları
Bu komutları sunucunuzda çalıştırın:
Ve şimdi aşağıda listelenen komutları aynı sırayla çalıştırın:
Ve şimdi aşağıda listelenen komutları aynı sırayla çalıştırın:
Not
Docker Compose'un kararlı çalışması için pip sürüm 6.0 veya daha yüksek paket yöneticisi kullanmanızı öneririz. Pip sürümü 6.0'dan düşükse, güncellemek için aşağıdaki komutu çalıştırın:
Aşağıdaki komutu göndererek Docker sürümünü kontrol edin:
Sonuç:
Docker Compose aracı ile kapsayıcıları dağıtma
Bir dizin oluşturun, ardından içinde bir compose dosyası oluşturun. Dosyaya "docker-compose.yml" veya "docker-compose.yaml" adını verin. Compose dosyasında uygulamalar için hizmetleri ve konteyner imajlarını tanımlayacaksınız.
Oluşturma dosyasını oluşturmaya başlamadan önce, WordPress ve MySQL kapsayıcılarının görüntülerini indirin:
wordpress latest d44c65e8e9a3 9 days ago 540MB
mysql latest 9b51d9275906 3 weeks ago 547MB
Ardından "siteonwordpress" adında bir dizin oluşturun:
Listelenen içeriklerle bir docker-compose.yml dosyası oluşturun:
services:
frontserver:
image: wordpress
container_name: wp_cont
ports:
- 8080:80
links:
- databaseserver:mysql
environment:
WORDPRESS_DB_PASSWORD: erf6UiwkzjTH
databaseserver:
image: mysql:latest
container_name: wordpressdb_cont
environment:
MYSQL_ROOT_PASSWORD: erf6UiwkzjTH
Yukarıdaki compose dosyasında "frontserver" ve "databaseserver" adında iki servis tanımlanmıştır. Bunlar için konteyner imajları da belirtilmiştir. Ortam değişkenleri tanımlanmış ve MySQL root ve DB WordPress şifreleri de belirtilmiştir. YAML işaretlemesine göre girinti için boşluk kullanmanız gerektiğini unutmayın.
Uygulamanızı, bu durumda bir WordPress web sitesini, şu komutu kullanarak dağıtın:
Not
Docker-compose dosyasının bulunduğu dizinden "docker-compose up" komutunu çalıştırmalısınız.
Yukarıdaki komut "wp_cont" ve "wordpressdb_cont" adlı iki konteyneri dağıtacaktır. Aşağıdaki URL'yi kullanarak WordPress web sitenize erişmeyi deneyin:
WordPress kurulumunu tamamlamak için ekrandaki talimatları izleyin. Bu, WordPress sitesinin docker-compose yardımcı programı kullanılarak konteynerlerin içine başarıyla yerleştirildiğini onaylar.
Şimdi "docker-compose" komutunun parametrelerine bakalım.
Uygulama için dağıtılan kapsayıcıların çıktısı
Çıktı almak için aşağıdaki komutu çalıştırın:
--------------------------------------------------------------------------------
wordpressdb_cont docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
wp_cont docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp
Konteynerleri ve hizmetlerini durdurma ve başlatma
"docker-compose up" komutunu çalıştırırken Ctrl+C tuşlarına basın veya aşağıdaki komutu çalıştırın:
Stopping wordpressdb_cont ... done
Konteynerleri ve hizmetlerini çalıştırmak için "docker-compose start" komutunu çalıştırın:
Starting frontserver ... done
Konteyner günlüklerine göz atın
Tüm konteyner günlüklerine veya belirli bir konteynerin günlüklerine göz atmak için "docker-compose logs {service-name}" komutunu çalıştırın:
Oluşturulan ağ ile birlikte konteynerleri durdurun ve silin
"docker-compose down" komutu ile konteynerleri tek bir komutla durdurabilir ve silebilirsiniz:
Stopping wordpressdb_cont ... done
Removing wp_cont ... done
Removing wordpressdb_cont ... done
Removing network compose_default
Ek parametreleri "docker-compose -help" komutunu çalıştırarak yardım bölümünde bulabilirsiniz.