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:
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
yum -y install java
/bin/bash
Ve şimdi aşağıda listelenen komutları aynı sırayla çalıştırın:
yum install epel-release -y
yum install python-pip -y
pip install docker-compose
Ve şimdi aşağıda listelenen komutları aynı sırayla çalıştırın:
yum install epel-release -y
yum install python-pip -y
pip install docker-compose
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:
pip install --upgrade pip
Aşağıdaki komutu göndererek Docker sürümünü kontrol edin:
docker-compose --version
Sonuç:
docker-compose version 1.25.4, build 8d51620a
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:
docker pull wordpress
docker pull mysql
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
wordpress latest d44c65e8e9a3 9 days ago 540MB
mysql latest 9b51d9275906 3 weeks ago 547MB
Ardından "siteonwordpress" adında bir dizin oluşturun:
mkdir siteonwordpress
cd siteonwordpress/
Listelenen içeriklerle bir docker-compose.yml dosyası oluşturun:
version: '3.0'
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:
docker-compose up
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:
http://{dockerserver-ip}:8080
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:
docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------
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:
docker-compose stop
Stopping wp_cont ... done
Stopping wordpressdb_cont ... done
Konteynerleri ve hizmetlerini çalıştırmak için "docker-compose start" komutunu çalıştırın:
docker-compose start
Starting databaseserver ... done
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:
docker-compose logs
docker-compose logs databaseserver
Oluşturulan ağ ile birlikte konteynerleri durdurun ve silin
"docker-compose down" komutu ile konteynerleri tek bir komutla durdurabilir ve silebilirsiniz:
docker-compose down
Stopping wp_cont ... done
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.