Docker Compose ile Python Uygulamaları Yönetmek

Giriş: Neden Docker ve Docker Compose?

Günümüzde yazılım geliştirme süreçleri, daha karmaşık ve dinamik hale geldi. Uygulamalar genellikle çok sayıda bağımlılığa ve çeşitli hizmet yapılarına ihtiyaç duyar. Bu noktada Docker, yazılımcılara ve sistem yöneticilerine büyük kolaylıklar sunan bir araç olarak öne çıkıyor. Docker, uygulamalarınızı konteynerler içinde izole olmuş bir şekilde çalıştırmanıza olanak tanırken, Docker Compose ise birden fazla hizmeti tanımlayıp bu hizmetlerin aynı anda çalıştırılmasını sağlayan, kullanımı kolay bir araçtır.

Docker Compose ile Python uygulamalarını yöneterek, geliştirme ortamını standartlaştırabilir, projeler arasındaki bağımlılıkları kontrol edebilir ve ekipler arası işbirliğini artırabilirsiniz. Bu makalede, Docker Compose kullanarak Python uygulamaları oluşturma ve yönetme sürecine yönelik adım adım rehber ve ipuçları sunacağız.

Docker ve Docker Compose ile Python Uygulama Ortamı Kurulumu

Docker ve Docker Compose’u kullanmaya başlamak için öncelikle bilgisayarınızda bu araçların kurulu olması gerekir. Docker, işletim sistemine bağımlı olmadan uygulama geliştirip çalıştırmanıza olanak sağlar. Kurulum işlemi kendi platformunuza göre değişir. Genellikle, Docker resmi web sitesinden güncel kurulum kılavuzunu takip ederek kolayca Docker’ı kurabilirsiniz.

Kurulumdan sonra Docker Compose da kolay bir şekilde kurulabilir. Docker Compose, Docker ile birlikte gelmektedir, ancak ayrı olarak yüklemek isteyenler için kurulum adımları mevcuttur. Docker Compose nedir diye soracak olursanız, çoklu konteyner uygulamalarını tanımlamak için kullanılan bir yapılandırma dosyasıdır (genellikle docker-compose.yml olarak adlandırılır).

Python uygulamanız için bir konteyner yapılandırmayı başlatmak için, örnek bir docker-compose.yml dosyası oluşturmalısınız. Örneğin:

version: '3'
services:
  web:
    image: python:3.9
    volumes:
      - .:/code
    working_dir: /code
    command: python app.py

Bu yapılandırma, Python’un 3.9 versiyonunu kullanarak bir app.py dosyasını çalıştıracak basit bir web hizmeti oluşturur. Konteyner, mevcut dizinin içeriğini /code dizinine aktarır.

Python Projesi ve Gereksinimler

Docker Compose ile çalıştığınızda, uygulamanızın gereksinimlerini belirlemeniz gerekir. Python projeleri genellikle requirements.txt dosyası ile birlikte gelir. Bu dosya, projede kullanılacak kütüphanelerin ve bunların sürümlerinin listesini içerir. Dockerfile ve docker-compose.yml dosyanızın yanında requirements.txt dosyasını oluşturun ve tüm bağımlılıkları buraya ekleyin. Örneğin:

flask==2.0.1
requests==2.26.0
numpy==1.21.1

Docker konteynerinizi oluştururken, gereksinimlerinizi yüklemek için requirements.txt dosyasını kullanabilirsiniz. Bunun için bir Dockerfile oluşturup, içeriğine şu satırları ekleyin:

FROM python:3.9
COPY requirements.txt /code/
RUN pip install --no-cache-dir -r /code/requirements.txt

Bu şekilde, konteyner oluşturulurken ihtiyaç duyulan tüm Python paketleri otomatik olarak yüklenmiş olacak.

Docker Compose ile Hizmetlerin Tanımlanması

Özelleştirilmiş docker-compose.yml dosyanızda bir veya daha fazla hizmet tanımlayabilirsiniz. Her bir hizmet, kendi bağımsız konteynerine sahip olacaktır. Örneğin, bir web hizmetinin yanı sıra bir veritabanı hizmeti de tanımlayabilirsiniz. Aşağıda, Flask ile basit bir web uygulaması ve PostgreSQL veritabanı ile yapılandırılmış bir örnek verilmektedir:

version: '3'
services:
  web:
    build: .
    ports:
      - '5000:5000'
    environment:
      - DATABASE_URL=postgresql://user:password@db:5432/mydb
  db:
    image: postgres:13
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=mydb

Yukarıdaki örnek, web uygulamanızın 5000 portu üzerinden erişilebilir olmasını ve veritabanı bağlantı bilgilerini yapılandırmasını sağlar. Veritabanı hizmeti otomatik olarak PostgreSQL konteynerini başlatacaktır. Koruma sağlamak için, DATABASE_URL çevresel değişkenini tanımlamak kritik bir adımdır.

Konteynerlerin Yönetimi ve Uygulama Çalıştırma

Docker Compose ile hizmetlerinizi başlatmak oldukça kolaydır. Projenizin kök dizininde terminal veya komut istemcisi açarak, şu komutu çalıştırabilirsiniz:

docker-compose up

Bu komut, tanımladığınız tüm hizmetleri başlatır ve çıktıları terminalde görüntüler. Eğer arka planda çalıştırmak isterseniz, -d bayrağını ekleyebilirsiniz:

docker-compose up -d

Konteynerlerinizi durdurmak veya kaldırmak için docker-compose down komutunu kullanabilirsiniz. Bu komut, tüm çalışan konteynerlerinizi durdurur ve siler. Projenizdeki değişiklikleri test etmek için docker-compose restart komutu da etkilidir.

Geliştirme Süreçleri ve Anlık Değişiklikler

Docker Compose ile uygulamalarınızı geliştirirken, değişiklikleri anlık olarak uygulamanız oldukça önemlidir. Kod değişikliklerinizi geliştirme ortamında doğrudan yansıtmak için, volumes ayarını kullanarak yerel dosyalarınızı konteyner içinde senkronize edebilirsiniz. Örneğin:

volumes:
  - .:/code

Bu ayar, yerel dizindeki değişiklikleri anında konteynerde yansıtır. Yani, kaynak kodunuza yaptığınız değişikliklerden hemen sonra konteyneri yeniden başlatmanıza gerek kalmadan etkili çözüm ve sonuçlar elde edebilirsiniz.

Ayrıca, Flask uygulamalarında geliştirme aşamasında debug=True modunu etkinleştirerek, hataları ve değişiklikleri anında takip edebilirsiniz. Bu durumda Flask uygulama dosyanızda aşağıdaki gibi bir satır eklemek yeterlidir:

app.run(debug=True)

Bu sayede, Flask otomatik olarak kod değişikliklerini algılayarak uygulamayı yeniden başlatacaktır.

Hata Yönetimi ve Sorun Giderme

Docker Compose kullanırken hata yönetimi hayati önem taşır. Konteynerlerde meydana gelebilecek hataların tespiti ve giderilmesi, uygulamanızın sorunsuz çalışmasını sağlamak açısından kritik bir adımdır. Genellikle, Docker logları bu süreçte önemli bir kaynak oluşturur. Her bir hizmetin loglarını görüntülemek için aşağıdaki komutu kullanabilirsiniz:

docker-compose logs

Böylece hizmetlerinizle ilgili hata mesajlarını ve izleme verilerini görebilirsiniz. Hataların kaynağını anlamak ve çözümler geliştirmek için bu bilgiler oldukça yararlıdır. Ayrıca, belirli bir hizmetin loglarını incelemek istiyorsanız, log isteklerini şu şekilde belirtebilirsiniz:

docker-compose logs web

Bunun yanı sıra, düzeltici önlemler alarak yaygın hataları ele almak da önemlidir. Örneğin, bağlantı hataları, yapılandırma sorunları ve ortama özel değişkenlerin eksikliği gibi durumlar sıkça karşılaşılan senaryolar arasında yer almaktadır.

Sonuç: Docker Compose ile Python Uygulamalarınızı Güçlendirin

Docker Compose, Python uygulamalarınızı geliştirmek ve yönetmek için etkili bir araçtır. Hizmetlerinizi kolayca tanımlamanıza, bağımlılıkları yönetmenize ve geliştirme süreçlerinizi standartlaştırmanıza yardımcı olur. Makalede ele alınan yöntemler ile, projelerinizi daha düzenli bir şekilde oluşturabilir ve ekip arkadaşlarınızla verimli bir işbirliği sağlayabilirsiniz.

Gelecekte yapabileceğiniz birçok şey var. Örneğin, CI/CD süreçlerinizi Docker Compose ile entegre ederek, sürekli entegrasyon ve dağıtım adımlarınızı optimize edebilirsiniz. Her yeni projede Docker Compose yapılandırmalarınızı kullanarak zamandan tasarruf edebilir, hata payını minimize edebilir ve işlerinizin daha sorunsuz bir şekilde gitmesini sağlayabilirsiniz.

Sonuç olarak, Docker Compose ile Python deneyiminizi bir üst seviyeye taşıyabilirsiniz. Kendi projelerinizde bu yöntemleri deneyin, topluluk ile paylaşın ve deneyimlerinizi zenginleştirerek bir sonraki seviyeye geçiş yapın!

Scroll to Top