Docker Compose Nedir ve Neden Kullanılır?
Bir yazılımcı olarak, uygulamanızı her geliştirdiğinizde, genellikle bir dizi bağımlılık, veritabanı, ağ yapılandırması ve ortam değişkenleri ile uğraşırsınız. Peki, tüm bu karmaşık yapıyı tek bir komutla yönetebileceğinizi söylesem? Evet, Docker Compose tam olarak bunu yapar! Docker Compose, birden fazla Docker konteynerini kolayca tanımlamanızı ve çalıştırmanızı sağlayan bir araçtır. Kısacası, uygulamanızın birden fazla hizmetini bir araya getiren bir orkestratör gibidir.
Eğer "Docker Compose" hakkında daha önce hiç duymadıysanız, bu yazı tam size göre. Çünkü burada, Docker Compose’u adım adım öğrenip, projelerinize nasıl entegre edebileceğinizi keşfedeceğiz.
Docker Compose ile Uygulama Çalıştırmanın Temel Adımları
Docker Compose, bir "docker-compose.yml" dosyası aracılığıyla çalışır. Bu dosya, uygulamanızın tüm konteynerlerini tanımladığınız ve yapılandırdığınız bir yerdir. Her hizmetin nasıl çalıştığına dair tüm bilgileri burada toplarsınız. Örneğin, web sunucusunun çalıştığı port, veri tabanı ayarları ve daha fazlası.
İlk olarak Docker Compose’un kurulu olduğundan emin olun. Eğer kurulu değilse, Docker'ı ve Docker Compose’u indirmeniz gerekir. Aşağıdaki adımları takip ederek kolayca kurulum yapabilirsiniz:
# Docker Compose'u yüklemek için terminalde şu komutu kullanın
curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose.yml Dosyasını Oluşturmak
Şimdi asıl önemli kısma geldik: "docker-compose.yml" dosyasını oluşturma kısmı. Bu dosya sayesinde Docker Compose’un tüm sihirli komutlarını yazabilirsiniz. Başlangıç olarak basit bir Node.js uygulaması kuracağız ve bu uygulama bir veritabanı ile bağlanacak.
İşte temel bir docker-compose.yml dosyasının örneği:
version: '3'
services:
web:
image: node:14
container_name: node_app
working_dir: /usr/src/app
volumes:
- .:/usr/src/app
ports:
- "3000:3000"
command: npm start
depends_on:
- db
db:
image: postgres:13
container_name: postgres_db
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydb
ports:
- "5432:5432"
Bu dosya iki hizmeti tanımlar:
1. web: Node.js uygulamanızı çalıştıracak olan hizmet.
2. db: PostgreSQL veritabanınız.
Bu yapı sayesinde, her iki konteynerin de doğru şekilde çalışabilmesi için sadece `docker-compose up` komutunu girmeniz yeterli!
Docker Compose ile Uygulama Başlatma ve Durdurma
Docker Compose ile uygulamanızı başlatmak oldukça basit. Terminalde, dosyanızın bulunduğu dizine gidin ve şu komutu yazın:
docker-compose up
Bu komut, tüm hizmetlerinizi başlatacak ve konteynerlerinizin düzgün bir şekilde çalışmasını sağlayacaktır. Eğer arka planda çalıştırmak isterseniz, `-d` parametresini kullanabilirsiniz:
docker-compose up -d
Bir başka ihtiyacınız olabilecek komut ise, uygulamanızın çalışmasını sonlandırmak için kullanılan `docker-compose down` komutudur:
docker-compose down
Bu komut, çalışmakta olan konteynerleri durdurur ve ağ bağlantılarını temizler.
Docker Compose ile Ortam Değişkenlerini Yönetmek
Yazılım geliştirme sırasında, genellikle farklı ortamlarda (geliştirme, test, üretim vb.) çalıştığınızda her bir ortam için farklı ayarlara ihtiyacınız olur. Docker Compose bu durumu yönetmek için environment değişkenlerini kullanır.
Örneğin, veritabanı bağlantısı için farklı ortamlar için farklı şifreler kullanabilirsiniz. Bunun için `.env` dosyasını oluşturabilir ve burada ortam değişkenlerinizi saklayabilirsiniz.
Örnek bir `.env` dosyası:
POSTGRES_USER=user
POSTGRES_PASSWORD=secret
POSTGRES_DB=mydb
Bu dosyayı `docker-compose.yml` dosyanızda şu şekilde kullanabilirsiniz:
db:
image: postgres:13
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
Bu şekilde, her ortam için uygun ayarları dışarıdan alarak daha esnek bir yapı elde edebilirsiniz.
Sonuç ve İpuçları
Docker Compose, uygulamalarınızı yönetmenin hızlı ve etkili bir yoludur. Hem geliştiriciler hem de sistem yöneticileri için bu araç, uygulama konteynerlerini hızlıca başlatma, durdurma ve yönetme konusunda büyük kolaylık sağlar. Bu yazıda, Docker Compose’u nasıl kullanacağınızı ve temel yapılandırmalarla nasıl projelerinize entegre edebileceğinizi öğrendiniz.
Şimdi sıra sizde! Docker Compose ile daha verimli uygulamalar geliştirmeye başlayabilirsiniz. Unutmayın, her projede doğru yapılandırma ve doğru komutlar sizi daha güçlü kılacaktır.