Python Flask ile Docker Örneği: Uygulamanızı Container’da Çalıştırma

Giriş

Günümüzde, uygulama geliştirme süreçlerinin en önemli parçalarından biri taşınabilirlik ve sürdürülebilirliktir. Python, özellikle Flask gibi hafif ve esnek bir framework ile birlikte, bu amaca hizmet eden harika bir araçtır. Docker ise uygulamaları ayrı bir ortamda çalıştırmamızı sağlayarak geliştirilen yazılımların dağıtımını ve yönetimini kolaylaştırır. Bu yazıda, Python Flask uygulamamızı Docker ortamında çalıştırmayı adım adım inceleyeceğiz. Böylece uygulamamızın farklı ortamlar arasında geçiş yapmasının ve ölçeklenebilirliğinin ne kadar kolay olduğunu göreceksiniz.

Neden Docker Kullanmalıyız?

Docker, uygulamaları container içinde izole bir şekilde çalıştırarak bir dizi avantaj sunar. Öncelikle, uygulama ve bağımlılıklarının tek bir paket halinde taşınabilmesi, geliştiricilerin ve sistem yöneticilerinin işini oldukça kolaylaştırır. Test sürecinde, üretim ortamında ya da farklı kullanıcı makinelerinde aynı uygulamanın çalışmasını sağlamak için gereksiz karmaşayı ortadan kaldırır. Ayrıca, Docker konteynerleri hızlı bir şekilde başlatılabilir ve durdurulabilir, bu da CI/CD süreçlerini (Continuous Integration/Continuous Deployment) optimize eder.

Bir diğer avantajı ise, farklı platformlar üzerinde aynı ortamda uygulamanızı çalıştırma olanağı sunmasıdır. Örneğin, sizin Docker ile geliştirdiğiniz bir uygulama, başkası için aynı Docker imajıyla çalışabilir. Bu, özellikle ekipler arasında uyum sağlamak ve dağıtık sistemler geliştirmek açısından faydalıdır.

Son olarak, Docker’ın sağladığı ölçeklenebilirlik, uygulamanızın yük altında daha verimli çalışmasını sağlar. İhtiyaç duyduğunuzda yeni konteynerler oluşturabilir ve bu sayede tek bir uygulamanın birden çok örneğini yönetmek oldukça kolaylaşır.

Flask Uygulaması Oluşturma

Şimdi, basit bir Flask uygulaması oluşturarak başlayalım. İlk önce, gerekli kütüphaneleri bir araya getireceğiz. Aşağıdaki adımları izleyerek bir Flask projesi oluşturalım:

mkdir flask_docker_example
cd flask_docker_example
python3 -m venv venv
source venv/bin/activate
pip install Flask

Bunları yaptıktan sonra, basit bir Flask uygulaması yazalım. app.py adında bir dosya oluşturun ve aşağıdaki kodu ekleyin:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
    return "Merhaba, Flask ile Docker!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

Bu uygulama, tarayıcınızda http://localhost:5000 adresine gittiğinizde size basit bir ‘Merhaba, Flask ile Docker!’ mesajı verecektir. Ancak şu an uygulamamız yalnızca yerel bir ortamda çalışıyor; Docker ile çalışması için gerekli adımları atmamız gerekecek.

Dockerfile Oluşturma

Docker, uygulamanızı bir konteyner içinde çalıştırmak için bir Dockerfile dosyasına ihtiyaç duyar. Bu dosya, Docker’a uygulamanızı nasıl oluşturacağı ve çalıştıracağı talimatlarını içerir. Proje klasörünüzde Dockerfile adında bir dosya oluşturarak başlayalım:

touch Dockerfile

Şimdi Dockerfile içeriğini yazalım:

FROM python:3.9-slim

# Çalışma dizini oluştur
WORKDIR /app

# Gereksinim dosyasını kopyala ve yükle
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Uygulama dosyalarını kopyala
COPY . .

# Flask uygulamasını başlat
CMD ["python", "app.py"]

Yukarıdaki Dockerfile’da, önce Python’un 3.9-slim sürümünü baz alıyoruz. Ardından, requirements.txt dosyasını kopyalayıp içindeki bağımlılıkları yüklüyoruz. Sonrasında uygulama dosyalarını kopyalıyor ve Flask uygulamamızı başlatıyoruz. Şimdi bu dosyada belirtildiği gibi bir requirements.txt dosyası oluşturalım.

Requirements Dosyası

Bir requirements.txt dosyası oluşturarak Flask bağımlılığını burada tanımlamamız gerekiyor. Proje dizininizde requirements.txt adında bir dosya oluşturun ve aşağıdaki satırı ekleyin:

Flask

Bu dosya, Docker konteynerimiz içinde Flask’ın yüklenmesini sağlayacaktır. Şimdi, Docker imajımızı derlemek için birkaç adım daha kaldı.

Docker İmajını Oluşturma

Docker imajımızı oluşturmak için terminalinizi açın ve proje dizinine giderek aşağıdaki komutu çalıştırın:

docker build -t flask_docker_example .

Bu, Dockerfile’ınızın bulunduğu dizinde çalıştırdığınız için ‘.’ ile belirttiğiniz o dizindeki talimatları izleyecek ve flask_docker_example adında bir imaj oluşturacaktır.

İmaj başarıyla oluşturulduktan sonra, oluşturduğunuz Flask uygulamanızı çalıştırmak için aşağıdaki komutu kullanabilirsiniz:

docker run -p 5000:5000 flask_docker_example

Bu komut, 5000 numaralı portu konteyner içindeki 5000 portuna yönlendirmiştir. Tarayıcınızda bir sekme açarak http://localhost:5000 adresine gittiğinizde, ‘Merhaba, Flask ile Docker!’ mesajını görebileceksiniz.

Docker ile Flask Uygulamasını Geliştirme

Artık Flask uygulamanız Docker içerisinde çalıştığına göre, geliştirme sürecini daha verimli hale getirmek için otomatik yeniden yükleme (auto-reload) özelliğini kullanabiliriz. Geliştirme sırasında değişiklik yaptığınızda, konteynerin hemen yeniden yüklenmesini sağlamak için Docker’ı şu şekilde çalıştırabilirsiniz:

docker run -p 5000:5000 -v $(pwd):/app flask_docker_example

Burada, -v $(pwd):/app kısmı, mevcut dizininizi (projeyi) konteyner içerisindeki /app dizinine bağlıyor. Böylece yaptığınız değişiklikler anlık olarak konteynerde gözetilerek uygulamanız yeniden başlatılmaktadır.

Geliştirme sırasında bu yöntem, hemen geri dönüş almanızı ve değişikliklerinizi hızla test etmenizi sağlar. Docker kullanarak daha hızlı ve etkili bir geliştirme süreci geçirebilirsiniz.

Sonuç

Bu yazıda, Python Flask uygulamanızı Docker içinde nasıl çalıştıracağınızı, gerekli dosyaları nasıl oluşturacağınızı ve temel imaj oluşturma adımlarını öğrendiniz. Flask ile birlikte Docker kullanmak, uygulamanızı taşınabilir hale getirir ve geliştirme sürecinizi daha verimli kılar. İlk başta her şey zor görünebilir, ancak doğru adımlar ve uygulamalarla süreci kolaylaştırmak mümkündür.

Unutmayın, bu yazı sadece başlangıç noktası. Daha karmaşık senaryolar, veri tabanı bağlantıları veya diğer hizmetlerle entegrasyonlar ekleyerek uygulamanızı daha da geliştirebilirsiniz. Docker ve Flask ile oynayarak yeni şeyler öğrenmekten çekinmeyin!

Okuduğunuz için teşekkür ederim! Sorularınızı ve geri bildirimlerinizi yorum olarak bırakabilirsiniz. Haydi, kendi projelerinizde Docker ve Flask ile deneyimler yapmaya başlayın!

Scroll to Top