Docker Compose Nedir?
Docker Compose, Docker konteynerlerinin bir arada çalışmasını kolaylaştıran güçlü bir araçtır. Genellikle, bir uygulama farklı servislerden (veritabanı, web sunucusu, vb.) oluşur. Docker Compose, bu servisleri bir arada çalıştırmak için tüm yapılandırmaları bir YAML dosyasında toplar.
Docker Compose Kurulumu
Docker Compose’u kullanmaya başlamadan önce, Docker’ın sisteminize yüklü olması gerekiyor. Eğer Docker kurulumunu zaten yaptıysanız, Docker Compose’u yüklemek çok basit.
sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | jq -r .tag_name)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Bu komut, en son sürümü indirir ve Docker Compose’u sisteminize yükler. Kurulumdan sonra, terminalde `docker-compose --version` komutunu yazarak kurulumun başarılı olup olmadığını kontrol edebilirsiniz.
Docker Compose YAML Dosyası Nasıl Yazılır?
Docker Compose, tüm yapılandırmaları bir YAML dosyasında toplar. Bu dosya genellikle `docker-compose.yml` olarak adlandırılır. İşte basit bir Docker Compose dosyasının örneği:
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
db:
image: postgres
environment:
POSTGRES_PASSWORD: example
Yukarıdaki örnekte, iki servis tanımlıyoruz: bir web servisi ve bir veritabanı servisi. Web servisi için `nginx` imajını kullanıyoruz ve bu servisin 8080 portunu açıyoruz. Veritabanı servisi ise PostgreSQL kullanıyor ve bir ortam değişkeni ile veritabanı parolasını belirliyoruz.
YAML dosyasındaki her bir servis, bağımsız bir konteyner olarak çalışır. `nginx` web sunucusunu ve PostgreSQL veritabanını kolayca çalıştırabilirsiniz.
Docker Compose ile Uygulama Başlatma
Docker Compose ile uygulamanızı başlatmak oldukça basittir. Terminalde, bulunduğunuz dizinde `docker-compose.yml` dosyanızın olduğunu varsayalım. Aşağıdaki komutu girerek tüm servisleri başlatabilirsiniz:
docker-compose up
Bu komut, tüm servisleri başlatacak ve arka planda çalıştıracaktır. Eğer sadece bir servisi çalıştırmak isterseniz, servis adını belirterek aşağıdaki komutu kullanabilirsiniz:
docker-compose up web
Docker Compose ile Konteynerleri Duraklatma ve Durdurma
Uygulamanızı çalıştırdıktan sonra, durdurmak da oldukça basittir. Konteynerleri durdurmak için şu komutu kullanabilirsiniz:
docker-compose down
Bu komut, çalışmakta olan tüm konteynerleri durdurur ve kaldırır. Eğer sadece konteynerlerinizi durdurmak, ancak kaldırmamak isterseniz, aşağıdaki komutu kullanabilirsiniz:
docker-compose stop
Docker Compose ile Veritabanı ve Web Sunucusu Yönetimi
Docker Compose, sadece basit servisleri çalıştırmakla kalmaz, aynı zamanda veritabanı bağlantılarınız gibi daha karmaşık durumları da yönetmenizi sağlar. Örneğin, bir web uygulamanız varsa ve bu uygulamanın PostgreSQL veritabanına ihtiyacı varsa, Docker Compose dosyasındaki `db` servisini bir veritabanı olarak yapılandırabilirsiniz. Web servisi ise bu veritabanına bağlanarak çalışacaktır.
Docker Compose ile Ağ Yönetimi
Docker Compose, konteynerler arasında ağlar oluşturarak, uygulamanızdaki servislerin güvenli bir şekilde iletişim kurmasına olanak tanır. Her servisin kendi ağına sahip olmasını sağlayabilir ve bu ağlar arasında iletişim kurulmasını yönetebilirsiniz. Örneğin, bir mikroservis mimarisi kullanıyorsanız, her bir mikroservis kendi Docker Compose ağında çalışabilir.
version: '3'
services:
web:
image: nginx
networks:
- frontend
db:
image: postgres
networks:
- backend
networks:
frontend:
backend:
Yukarıdaki örnekte, `web` servisi yalnızca `frontend` ağına bağlıdır, `db` servisi ise yalnızca `backend` ağına bağlıdır. Bu, ağ izolasyonunu sağlar.