Kubedo Academy’e hoş geldiniz! Bu laboratuvarda Docker Compose ile mikroservis mimarisi oluşturmayı öğreneceksiniz.
Zorluk seviyesi: Orta
Süre: Yaklaşık 60 dakika
Giriş
Bu laboratuvarda basit bir Python script’inden başlayarak çoklu servis mimarisine ulaşacağız:

Mimari Bileşenler
| Servis | Teknoloji | Açıklama |
|---|---|---|
| Web | PHP/Apache | Kullanıcı arayüzü |
| API | Python/Flask | Link çıkarma servisi |
| Cache | Redis | Önbellek |
Adım 0: Temel Script
Repository’yi klonlayın:
Terminal
$ git clone https://github.com/ibnesayeed/linkextractor.git
cd linkextractor
git checkout demoBasit Python script’i:
#!/usr/bin/env python
import sys
import requests
from bs4 import BeautifulSoup
res = requests.get(sys.argv[-1])
soup = BeautifulSoup(res.text, "html.parser")
for link in soup.find_all("a"):
print(link.get("href"))
[!WARNING] Bu script bağımlılıklar yüklü değilse çalışmaz. Docker bu sorunu çözer!
Adım 1: Containerize Edilmiş Script
Terminal
$ git checkout step1
cat DockerfileFROM python:3
RUN pip install beautifulsoup4
RUN pip install requests
WORKDIR /app
COPY linkextractor.py /app/
RUN chmod a+x linkextractor.py
ENTRYPOINT ["./linkextractor.py"]
İmaj oluşturma ve çalıştırma:
Terminal
$ docker image build -t linkextractor:step1 .
docker container run -it --rm linkextractor:step1 http://example.com/Adım 2: Geliştirilmiş Script
Terminal
$ git checkout step2
docker image build -t linkextractor:step2 .
docker container run -it --rm linkextractor:step2 https://example.com/Yenilikler:
- Tam URL’ler
- Anchor text çıkarma
- Modül olarak kullanılabilir
Adım 3: API Servisi
Terminal
$ git checkout step3
docker image build -t linkextractor:step3 .
docker container run -d -p 5000:5000 --name=linkextractor linkextractor:step3API’yi test edin:
Terminal
$ curl -i http://localhost:5000/api/http://example.com/Adım 4: Docker Compose
Terminal
$ git checkout step4
cat docker-compose.ymlversion: '3'
services:
api:
image: linkextractor-api:step4-python
build: ./api
ports:
- "5000:5000"
web:
image: php:7-apache
ports:
- "80:80"
environment:
- API_ENDPOINT=http://api:5000/api/
volumes:
- ./www:/var/www/html
Servisleri başlatın:
Terminal
$ docker-compose up -d --buildAdım 5: Redis Cache
Terminal
$ git checkout step5version: '3'
services:
api:
build: ./api
ports:
- "5000:5000"
environment:
- REDIS_URL=redis://redis:6379
web:
build: ./www
ports:
- "80:80"
environment:
- API_ENDPOINT=http://api:5000/api/
redis:
image: redis
Docker Compose Komutları
| Komut | Açıklama |
|---|---|
docker-compose up | Servisleri başlatır |
docker-compose up -d | Arka planda başlatır |
docker-compose down | Servisleri durdurur |
docker-compose logs | Logları gösterir |
docker-compose ps | Çalışan servisleri listeler |
Sonuç
Bu laboratuvarda:
- Basit script’ten mikroservis mimarisine geçiş
- Docker Compose ile çoklu servis yönetimi
- Redis cache entegrasyonu
- Geliştirme ve üretim ortamı farklılıkları
öğrendiniz.