Docker Compose Nedir?
Docker Compose, birden fazla Docker konteynerini tanımlamanıza ve çalıştırmanıza olanak sağlayan bir araçtır. Genellikle microservices mimarisinde kullanılan bu araç, uygulamanızın tüm servislerini bir dosya içerisinde tanımlamanıza yardımcı olur. Bu dosya genellikle docker-compose.yml olarak adlandırılır.
Yani, Docker Compose sayesinde birkaç farklı Docker konteynerini aynı anda başlatabilir, durdurabilir ve yönetebilirsiniz. Bu işlemi manuel olarak yapmak yerine, sadece bir komutla hepsini halledebilirsiniz. Harika değil mi?
Docker Compose Kurulumu
Docker Compose’u kullanabilmek için öncelikle Docker’ın sisteminize kurulu olması gerekiyor. Eğer Docker'ı henüz kurmadıysanız, bunun için resmi Docker dokümantasyonuna göz atabilirsiniz. Ancak Docker kurulumunu tamamladıysanız, Docker Compose'u kurmak için adımları takip edebilirsiniz.
Aşağıdaki adımları takip ederek Linux işletim sisteminizde Docker Compose’u kolayca kurabilirsiniz:
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-composeKurulum tamamlandıktan sonra Docker Compose’un doğru bir şekilde yüklendiğini kontrol etmek için şu komutu kullanabilirsiniz:
docker-compose --versionEğer doğru bir sürüm numarası alıyorsanız, Docker Compose başarıyla kurulmuş demektir.
docker-compose.yml Dosyasını Oluşturmak
Docker Compose’un en önemli özelliklerinden biri, birden fazla Docker konteynerini tek bir dosya ile tanımlayabilmenizdir. Bu dosya, tüm servislere ait yapılandırmaları içerir ve genellikle docker-compose.yml olarak adlandırılır.
Örnek olarak bir web uygulaması ve veritabanı içeren basit bir yapı tanımlayalım. Bu durumda, web uygulamasını ve veritabanını bir arada çalıştıracağız.
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
db:
image: postgres
environment:
POSTGRES_PASSWORD: examplepassword
Yukarıdaki dosya, iki servisi tanımlar: bir web servisi (nginx) ve bir veritabanı servisi (PostgreSQL). Web servisi 8080 portunu 80 portuna yönlendirir. Veritabanı ise bir şifre ile başlatılır.
Docker Compose Komutlarıyla Çalışma
Docker Compose ile birden fazla servisi yönetmek oldukça basittir. Birkaç temel komutla tüm sisteminizi kontrol edebilirsiniz.
docker-compose up:
Bu komut, docker-compose.yml dosyasındaki servisleri başlatır. Komut çalıştırıldığında, tüm servislere ait konteynerler başlatılır.
docker-compose updocker-compose down:
Servisleri durdurmak için bu komutu kullanabilirsiniz. Bu komut, konteynerleri durdurur ve bağımlılıkları temizler.
docker-compose downdocker-compose logs:
Bir servisin günlüklerini görmek için bu komutu kullanabilirsiniz. Bu, özellikle uygulama geliştirirken hataları tespit etmek için çok yararlı olacaktır.
docker-compose logsdocker-compose ps:
Konteynerlerin durumunu görmek için kullanabileceğiniz bir başka yararlı komut.
docker-compose psDocker Compose İle Ortam Değişkenleri Kullanma
Çoğu uygulama farklı ortamlar (development, staging, production) için farklı yapılandırmalar gerektirir. Docker Compose, bu tür ortamlar için farklı yapılandırmalar kullanmanıza imkan verir. Ortam değişkenleri ile servisinize dair belirli parametreleri kolayca değiştirebilirsiniz.
Örneğin, veritabanı parolanızın ortam değişkeniyle belirtilmesi:
services:
db:
image: postgres
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
Yukarıdaki örnekte, DB_PASSWORD adlı bir ortam değişkeni kullanılıyor. Bu değişkeni terminalden şu şekilde tanımlayabilirsiniz:
export DB_PASSWORD=mysecretpasswordDocker Compose ile Çalışırken Dikkat Edilmesi Gerekenler
Docker Compose kullanırken dikkat etmeniz gereken birkaç önemli nokta var:
1. YAML Formatına Dikkat Edin: Docker Compose dosyanızda yazdığınız her şey YAML formatında olmalıdır. Format hataları sıkça karşılaşılan bir sorun olabilir, bu yüzden her zaman dosyanızı dikkatlice kontrol edin.
2. Konteynerlerin Bağımlılıkları: Eğer servislerinizin birbirine bağlı olması gerekiyorsa, bunların doğru sırayla başlatıldığından emin olun. Docker Compose, bağımlı konteynerlerin sırasını otomatik olarak yönetir, ancak bazen manuel müdahale gerekebilir.
3. Port Çakışmaları: Uygulamanızda kullanılan portların başka bir serviste kullanılmadığından emin olun. Port çakışmaları, servisin çalışmamasına neden olabilir.
Sonuç
Docker Compose, Docker ile çalışan geliştiriciler için vazgeçilmez bir araçtır. Birkaç basit komutla, karmaşık yapılandırmaları yönetmek, birden fazla servisi aynı anda başlatmak ve uygulamanızın tüm bileşenlerini kolayca yönetmek mümkündür. Linux kullanıcıları için Docker Compose, hem geliştirme sürecini hızlandırır hem de dağıtım aşamalarını daha verimli hale getirir.
Unutmayın, Docker Compose ile daha fazla şey yapabilirsiniz. Kendi projelerinizde denemeler yaparak, araçla ilgili daha fazla şey keşfedebilirsiniz.