Docker Nedir ve Neden Docker Compose?
Docker, uygulamalarınızı izole edilmiş bir ortamda çalıştırmanızı sağlayan bir platformdur. Peki, birden fazla konteyneri aynı anda yönetmek istediğinizde ne yaparsınız? İşte burada Docker Compose devreye giriyor. Docker Compose, birden fazla konteyneri tanımlamanıza ve bu konteynerleri birlikte başlatmanıza olanak tanır. Kısacası, Docker Compose sayesinde birden fazla servisi kolayca yönetebilirsiniz.
Docker Compose Nasıl Kurulur?
Docker Compose'u kurmak aslında oldukça basit. Eğer sisteminizde Docker yüklüyse, Docker Compose'u kurmanız sadece birkaç komut uzağınızda. Aşağıda, Docker Compose'un nasıl kurulacağına dair adım adım bir rehber bulacaksınız:
# Docker Compose kurulumu
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
# İzin verme
sudo chmod +x /usr/local/bin/docker-compose
# Kurulumu doğrulama
docker-compose --version
Yukarıdaki adımları takip ettiğinizde, Docker Compose'un en güncel sürümünü kolayca yükleyebilirsiniz.
Docker Compose ile Proje Nasıl Oluşturulur?
Şimdi asıl eğlenceli kısma geldik! Docker Compose ile nasıl bir proje oluşturacağımıza bakalım. Burada, basit bir Node.js ve MongoDB uygulaması kuracağız.
Adım 1: Proje klasörümüzü oluşturalım:
mkdir node-mongo-app
cd node-mongo-app
Adım 2: Docker Compose dosyasını oluşturalım. Bu dosya, tüm konteynerlerinizi ve bağlantılarını tanımlayacak.
version: '3'
services:
web:
image: node:14
container_name: node-web
ports:
- "3000:3000"
volumes:
- .:/usr/src/app
command: "npm start"
working_dir: /usr/src/app
depends_on:
- mongo
mongo:
image: mongo:latest
container_name: mongo-db
volumes:
- mongodb-data:/data/db
ports:
- "27017:27017"
volumes:
mongodb-data:
Yukarıdaki Docker Compose dosyası, iki servisi tanımlar: `web` ve `mongo`. `web` servisi, Node.js ile çalışan uygulamamızı temsil ederken, `mongo` servisi MongoDB veritabanını temsil eder.
Adım 3: Proje için gerekli dosyaları hazırlayalım:
touch Dockerfile
touch app.js
Dockerfile içerisine Node.js uygulamanız için temel bir yapı ekleyin. `app.js` dosyasına ise basit bir API yazın.
# Dockerfile
FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]
// app.js
const express = require('express');
const app = express();
const mongoose = require('mongoose');
const port = 3000;
mongoose.connect('mongodb://mongo:27017/mydb', { useNewUrlParser: true, useUnifiedTopology: true });
app.get('/', (req, res) => {
res.send('Merhaba Docker Compose!');
});
app.listen(port, () => {
console.log(`Uygulama ${port} portunda çalışıyor!`);
});
Adım 4: Şimdi her şey hazır. Docker Compose ile servisimizi başlatmak için şu komutu çalıştırın:
docker-compose up
Bu komut, hem `web` hem de `mongo` servislerini başlatacak ve uygulamanız hemen çalışmaya başlayacaktır.
Docker Compose'un Faydaları
Docker Compose ile çalışmanın pek çok avantajı var. Bunlardan bazıları şunlardır:
- Kolay Konfigürasyon: Birden fazla servisi tek bir dosyada tanımlayabilir ve sadece bir komutla başlatabilirsiniz.
- Verimli Geliştirme Süreci: Konteynerlerinizi kolayca oluşturup silebilir, ortamınızı hızlıca sıfırlayabilirsiniz.
- Bağımlılık Yönetimi: Bir servis diğerine bağımlı olduğunda, Docker Compose bu bağımlılıkları yönetir.
- Çoklu Ortam Desteği: Docker Compose ile, geliştirme, test ve üretim ortamlarınız arasında tutarlılığı sağlayabilirsiniz.
Sonuç
Docker Compose, geliştiricilerin karmaşık uygulamaları daha verimli ve düzenli bir şekilde yönetmelerine olanak tanır. Tek bir komutla tüm uygulamanızı başlatabilir, kolayca servisleri birbirine bağlayabilir ve yazılım geliştirme sürecinizi çok daha pratik hale getirebilirsiniz.
Eğer siz de Docker'ın gücünü tam anlamıyla kullanmak istiyorsanız, Docker Compose sizin için vazgeçilmez bir araç olacaktır. Şimdi sıra sizde! Kendi projelerinizi Docker Compose ile yapılandırarak geliştirme süreçlerinizi daha hızlı ve verimli hale getirin.