Docker Compose ile Birden Fazla Python Servisini Birleştirme

Docker Compose ile Birden Fazla Python Servisini Birleştirme

Docker Compose ile Birden Fazla Python Servisini Birleştirme konusunda size mükemmel bir rehber sunuyoruz Detaylı bilgi için yazımızı okuyun ve Python projelerinizde hep tek bir yerde kullanın!

Docker Compose ile Birden Fazla Python Servisini Birleştirme

Docker Compose, birden fazla Docker konteynerini tek bir uygulama olarak çalıştırmak için kullanılan bir araçtır. Bu sayede, uygulamanızın birden fazla bileşenini kolayca yönetebilirsiniz.

Docker Compose kullanarak, birden fazla Python servisini de bir araya getirebilirsiniz. Bu sayede uygulamanızın tüm yönlerinin tek bir yerden yönetilmesi mümkün hale gelir. Docker Compose, Dockerfile dosyalarını ve araçlarını kullanarak, birden fazla servis için gerekli konteynerleri oluşturup yönetebilirsiniz.

Bu makalede sizlere, Docker Compose kullanarak birden fazla Python servisini nasıl bir araya getirebileceğinizi anlatacağız. Ayrıca uygulamanızın Docker Compose ile nasıl yönetebileceğinizi de bu makalede öğreneceksiniz.


Docker Compose Nedir?

Docker Compose, Docker tarafından geliştirilen bir araçtır ve birden fazla Docker konteynerini tek bir uygulama olarak çalıştırmaya olanak sağlar. Docker Compose dosyası, bir uygulamanın gereksinim duyduğu tüm konteynerların nasıl oluşturulacağını ve yapılandırılacağını tanımlayan bir YAML dosyasıdır.

Docker Compose sayesinde, tüm konteynerlar aynı ortamda çalıştırılabilir ve birbirleriyle iletişim kurabilir. Böylece, uygulamanın dağıtımı ve yönetimi kolaylaşır. Ayrıca, birden fazla servisi veya uygulamayı aynı anda çalıştırabilme özelliği sayesinde de Docker Compose kullanımı oldukça pratiktir.


Docker Compose Kurulumu

Docker Compose, birden fazla Docker konteynerini tek bir uygulama olarak çalıştırmak için kullanılan bir araçtır. Ancak Docker Compose'u kullanabilmek için öncelikle Docker'ın yüklü olması gerekir. Docker'ın yüklü olup olmadığını kontrol etmek için terminalde "docker --version" komutu kullanılabilir.

Docker Compose'un resmi websitesinden indirilmesi gereklidir. Kurulum dosyalarına bu linkten ulaşılabilir. Kurulum işlemi tamamlandıktan sonra "docker-compose --version" komutu ile kurulumun doğruluğu kontrol edilebilir.


Python Flask Uygulaması Oluşturma

Python Flask uygulaması oluşturmak için öncelikle sanal bir ortam oluşturmanız gerekiyor. Sanal ortam, farklı uygulamalar için kullanılan bağımsız bir Python ortamıdır. Bu ortamda, uygulama için gerekli olan sürümleri yükleyebilir ve yönetebilirsiniz.

Bir sanal ortam oluşturmak için öncelikle terminali açın ve aşağıdaki komutu yazın:

python3 -m venv myenv

Bu komut, "myenv" adında bir sanal ortam oluşturur. Oluşturduğunuz sanal ortama geçmek için ise aşağıdaki komutu yazın:

source myenv/bin/activate

Ardından, Flask kurulumu yapmanız gerekiyor. Flask, Python için bir web uygulama çatısıdır ve hafif, esnek ve kullanımı kolaydır. Flask kurulumu için aşağıdaki komutu yazabilirsiniz:

pip install flask

Flask kurulumu tamamlandıktan sonra, örnek bir uygulama oluşturmak için aşağıdaki kodu kullanabilirsiniz:

from flask import Flaskapp = Flask(__name__) @app.route('/')def hello():    return 'Merhaba, Dünya!' if __name__ == '__main__':    app.run()

Bu kod, "Merhaba, Dünya!" mesajını içeren bir Flask uygulaması oluşturur. Kodu "app.py" adıyla kaydedin ve aşağıdaki komutu kullanarak uygulamayı başlatın:

export FLASK_APP=app.pyflask run

Uygulamanız şimdi http://127.0.0.1:5000 adresinde çalışır durumda. Tarayıcınızı açın ve bu adresi ziyaret edin. "Merhaba, Dünya!" mesajını görmeniz gerekiyor.


Ücretsiz Veritabanı Hizmeti Kullanma

Python Flask uygulaması için bir veritabanı hizmetine ihtiyacımız var. Bu amaçla ücretsiz bir veritabanı hizmeti olan ElephantSQL kullanılabilir. ElephantSQL, PostgreSQL veritabanları için bulut tabanlı bir veritabanı hizmetidir.

ElephantSQL'in kullanımı oldukça kolaydır. Ücretsiz bir hesap oluşturduktan sonra, veritabanınızı hızlı bir şekilde oluşturabilir ve Python uygulamanızla bağlantı kurabilirsiniz. Ayrıca, ElephantSQL'in sunduğu diğer özellikler arasında yedekleme, geri yükleme ve rapor oluşturma bulunur. Bu özellikler, uygulamanızın veritabanının güvenliğini ve performansını artırır.


Flask Uygulaması ve Veritabanı Arasındaki Bağlantı

Bir Python Flask uygulaması oluşturduğunuzda, veritabanı bağlantısı için öncelikle bir SQLAlchemy bağlantısı kurulmalıdır. SQLAlchemy, Flask ile birlikte çalışabilen açık kaynaklı bir Python SQL Toolkit ve ORM (Object-Relational Mapping) aracıdır.

Bağlantı kurmak için öncelikle uygulamanın konfigürasyon dosyasına veritabanı bağlantı bilgileri eklenmelidir. Bu bilgiler, hangi veritabanının kullanılacağına ve ne tür bir veritabanı yönetim sistemi kullanıldığına dair bilgiler içermelidir.

Sonrasında, SQLAlchemy kütüphanesi kullanılarak bağlantı kurulabilir. Bağlantıyı kurmak için bir engine ve Session sınıfı oluşturulmalıdır. Engine, veritabanına bağlanmak için kullanılırken, Session, SQLAlchemy tarafından sunulan ORM (Object-Relational Mapping) aracılığıyla veritabanına veri eklemek, silmek veya güncellemek için kullanılır.

Bu adımlar tamamlandıktan sonra, Python Flask uygulaması ve veritabanı arasındaki bağlantı başarılı bir şekilde kurulmuş olacaktır.


Python Django Uygulaması Oluşturma

Python Django, popüler bir web uygulama geliştirme çerçevesidir. Django, sıfırdan bir web uygulaması oluşturmanızı mümkün kılar. Python Django uygulaması oluşturmak için öncelikle bir sanal ortam kurmalısınız. Sanal ortam, uygulama için izole bir sistem ortamı sağlar ve uygulama bağımlılıklarının yönetimini kolaylaştırır.

Sanal ortam kurulumundan sonra, Django kurulumu yapılmadıysa, "pip install django" komutu kullanılarak kurulum gerçekleştirilebilir. İlk kurulumdan sonra "django-admin startproject" komutu kullanılarak yeni bir Django projesi oluşturulur. Bu komut, uygulamanın temel dosyalarını oluşturur ve uygulamanın başlatılmasına hazır hale getirir.

Bunun ardından, uygulamayı yönetmek için bir adet yönetim sistemine de ihtiyaç duyulur. Bu nedenle, "python manage.py createsuperuser" komutu kullanılarak yönetici hesabı oluşturulmalıdır. Oluşturulan yönetici hesabı, uygulama yönetimine izin veren Django Admin Paneli'ne erişim sağlar.

Uygulama ve veritabanı arasındaki bağlantıyı kurmak için PostgreSQL kullanılması önerilir. PostgreSQL veritabanı, ilişkisel veritabanı sistemleri için açık kaynak kodlu bir seçenektir. Veritabanı bağlantısını sürdürmek için, "settings.py" dosyası içerisinde PostgreSQL'e bağlantı tanımlanır.


Django Admin Paneli Oluşturma

Django Admin Paneli, Python Django uygulamanızın yönetimini kolaylaştıran bir arayüzdür. Bu panel, uygulamanızın kullanıcıları, bazı ayarları ve veritabanı gibi özelliklerini yönetmenizi sağlar. Bu panelden, veritabanına yeni kayıtlar ekleyebilir, güncelleme yapabilir, silebilir veya veritabanındaki herhangi bir veriyi görüntüleyebilirsiniz. Şimdi, bir Django projesinde Admin Paneli oluşturma adımlarına bakalım.

  1. Projenizin settings.py dosyasına gidin ve INSTALLED_APPS listesine 'django.contrib.admin' adlı uygulamayı ekleyin.

  2. urls.py dosyasını açın ve aşağıdaki kodu en üst satıra ekleyin:

      from django.contrib import admin    
  3. Ardından, uygulamanın çalışacağı domain adını belirtin. Aşağıdaki kodu urls.py dosyasının altına ekleyin:

      urlpatterns = [    path('admin/', admin.site.urls),]    
  4. Şimdi, Django projesini çalıştırın ve /admin sayfasına gidin. Django Admin Paneli karşınıza çıkacaktır.

Admin Paneli, kullanıcı dostu bir arayüze ve gerçek zamanlı olarak veritabanı değişikliklerini yönetme olanağına sahiptir. İçerisinde birçok özellik barındıran bu panelden uygulamanızı kolayca yönetebilirsiniz.


Django ve Veritabanı Arasındaki Bağlantı

Django uygulaması, veritabanı ile etkileşim içinde çalışır ve veritabanı tarafından sağlanan bilgileri kullanır. Bunun için bir PostgreSQL veritabanı kurulumu gereklidir. İlk olarak, Dockerfile dosyasında PostgreSQL kullanımı tanımlanmalıdır. Ardından, Docker Compose dosyasında PostgreSQL konteyneri tanımlanmalıdır.

  • Dockerfile dosyasında PostgreSQL kullanımı şu şekilde tanımlanabilir:
    FROM postgres
  • Docker Compose dosyasında PostgreSQL konteyneri tanımlanırken, aşağıdaki bilgiler verilmelidir:
    postgres:        image: postgres        restart: always        environment:            POSTGRES_USER: postgres            POSTGRES_PASSWORD: example            POSTGRES_DB: example

Bu bilgiler, PostgreSQL uygulamasının hangi kullanıcı adı ve şifrelerle oluşturulacağını ve hangi veritabanının kullanılacağını belirler. Docker Compose dosyasını oluşturduktan sonra, uygulama ve veritabanı arasındaki bağlantıyı sağlamak için Django kurulumu gereklidir.


Docker Compose Dosyası Oluşturma

Docker Compose, birden fazla Docker konteyneri arasındaki ilişkiyi yönetmek için kullanılan bir araçtır. Birden fazla Python servisini tek bir uygulama olarak çalıştırmak için Docker Compose kullanabilirsiniz. Docker Compose dosyası, birden fazla konteynerin nasıl oluşturulacağını ve çalıştırılacağını tanımlamak için kullanılır.

Docker Compose dosyası, YAML formatında yazılır. YAML, insanlar tarafından okunması kolay bir formatta verileri temsil etmek için kullanılır. Docker Compose dosyası, servislerin sürümünü, port numaralarını, ağ bağlantılarını ve diğer ayarları tanımlar. Docker Compose dosyasında, tüm konteynerlar tek bir komut ile oluşturulabilir ve çalıştırılabilir.

Docker Compose dosyasında, her bir servis için bir ad ve bir image belirtilmelidir. Servisler arasındaki ağ bağlantıları için, Docker Compose dosyasında bir network tanımlanmalıdır. Bir servis, diğer bir servise bağlanmak istediğinde, bağlantı bilgileri environment variables aracılığıyla sağlanır.

Syntax Açıklama
version: Docker Compose sürümü
services: Birkaç Docker servisi
networks: Birkaç Docker ağı
volumes: Birkaç Docker volume

Bir Docker Compose dosyasına örnek verecek olursak;

version: '3'services:  web:    build: .    ports:      - "5000:5000"    volumes:      - .:/code    environment:      FLASK_ENV: development  redis:    image: "redis:alpine"

Bu örnekte, web servisi konteyneri, Flask uygulamasını çalıştıracak ve 5000 portundan erişilebilir olacaktır. Ayrıca, web servisi, host makinedeki kodu ve volume'ü bağlayacaktır. Redis servisi ise, redis veritabanı konteynerini kullanacaktır.

Docker Compose dosyası oluşturduktan sonra, birkaç komut kullanarak tüm servisler tek bir komutla oluşturulabilir ve çalıştırılabilir. Bu, birden fazla servisi bir arada çalıştırmanın en kolay ve hızlı yolu olabilir.


Python Flask ve PostgreSQL Konteynerları

Python Flask ve PostgreSQL Konteynerları

Flask ve PostgreSQL, web uygulamaları geliştirmek için sıkça kullanılan popüler teknolojilerdir. Docker Compose kullanarak bu teknolojileri bir araya getirip uygulamanızı bir konteyner ortamında çalıştırabilirsiniz. Bunun için öncelikle Flask ve PostgreSQL konteynerleri için Dockerfile dosyaları oluşturmanız gereklidir.

Flask için oluşturacağınız Dockerfile dosyası aşağıdaki gibi olabilir:

FROM python:3.8-slim-buster
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["python3", "-m", "flask", "run", "--host=0.0.0.0"]

PostgreSQL için oluşturacağınız Dockerfile dosyası aşağıdaki gibi olabilir:

FROM postgres:12.0-alpine
ENV POSTGRES_USER postgres
ENV POSTGRES_PASSWORD example
ENV POSTGRES_DB mydatabase
EXPOSE 5432

Dockerfile dosyalarını oluşturduktan sonra, Docker Compose dosyasına bu konteynerleri tanımlamanız gereklidir. Bunun için aşağıdaki örnek Docker Compose dosyasını kullanabilirsiniz:

  version: '3'    services:    flask:      build: ./flask-app      ports:        - "8000:8000"        postgres:      build: ./postgres      ports:        - "5432:5432"

Bu dosyada flask ve postgres adında iki servis tanımlanmıştır. Flask servisi için oluşturduğunuz Dockerfile dosyası ./flask-app dizininde, postgres servisi için oluşturduğunuz Dockerfile dosyası ise ./postgres dizininde tutulur.

Bu şekilde, Python Flask ve PostgreSQL uygulamalarınızı bir arada çalıştırabilir ve uygulamanızı Docker konteynerleri ile paketleyebilirsiniz.


Python Django ve PostgreSQL Konteynerları

Python Django ve PostgreSQL konteynerları, Flask ve PostgreSQL konteynerlarına benzer şekilde, öncelikle Dockerfile dosyaları oluşturularak Docker Compose dosyasına tanımlanmalıdır. İlk adım olarak, PostgreSQL veritabanı için Dockerfile dosyası oluşturulmalıdır. Aşağıdaki Dockerfile örneğinde, PostgreSQL resmi Docker imajı kullanılmaktadır.

FROM postgresENV POSTGRES_USER postgresENV POSTGRES_PASSWORD passwordENV POSTGRES_DB mydb

Bu Dockerfile daha sonra PostgreSQL imajını oluşturmak için kullanılır ve oluşturulan imaj, Docker Compose dosyasına tanımlanır.

Django imajı da Dockerfile dosyası ile oluşturulabilir. Aşağıdaki örnekte, önceden oluşturulmuş bir sanal ortam kullanılarak Django kurulmuştur.

FROM python:3.8ENV PYTHONUNBUFFERED=1RUN mkdir /appWORKDIR /appCOPY requirements.txt /app/RUN pip install -r requirements.txtCOPY . /app/

Bu Dockerfile, django, psycopg2 gibi gerekli paketleri içeren requirements.txt dosyasını kullanarak Django imajını oluşturmak için kullanılabilir. Oluşturulan Django imajı, Docker Compose dosyasına tanımlanır ve diğer konteynerlarla birlikte çalışacak şekilde yapılandırılır.

Her iki Dockerfile dosyası da oluşturulduktan sonra, Docker Compose dosyası aşağıdaki gibi yapılandırılabilir:

version: '3'services:  django:    build: ./django    command: python manage.py runserver 0.0.0.0:8000    volumes:      - ./django:/app    ports:      - 8000:8000    depends_on:      - db  db:    image: postgres    environment:      POSTGRES_USER: postgres      POSTGRES_PASSWORD: password      POSTGRES_DB: mydb    volumes:      - ./postgres_data:/var/lib/postgresql/data

Bu Docker Compose dosyasında, Django ve PostgreSQL konteynerları bulunmaktadır. Django konteynerı, öncelikle Dockerfile'dan oluşturulur ve aynı zamanda volumes ve ports gibi Docker Compose seçenekleriyle yapılandırılır. PostgreSQL konteynerı, resmi PostgreSQL imajından oluşturulur ve çevre değişkenleri aracılığıyla yapılandırılır.

Docker Compose dosyasının tamamen yapılandırılmasından sonra, birden fazla Python servisini birleştiren uygulama, tek bir komutla çalıştırılabilir. Bu nedenle, Docker Compose, birden fazla konteynerin yönetimini kolaylaştırır ve uygulamanın dağıtımını hızlandırır.


Uygulamanın Çalıştırılması

Uygulamanın çalıştırılması oldukça kolay ve basittir. Docker Compose dosyası oluşturulduktan sonra, aşağıdaki komut kullanılarak uygulama çalıştırılabilir:

docker-compose up

Bu komut, Docker Compose dosyasındaki tüm konteynerleri başlatır ve ön planda çalıştırır. Konteynerlerin bağımlılıkları otomatik olarak yönetilir ve Docker Compose, tüm konteynerlerin ayrı ayrı başlatılması yerine tek bir komutla tüm uygulamanın başlatılmasını sağlar.

Uygulamanın çalıştırılmasından sonra, Docker Compose komut satırı çıktısı gösterilir ve uygulamanın çalışması için gerekli tüm detaylar listelenir. Uygulama, varsayılan olarak http://localhost:5000 adresinde çalışacaktır. Adres değiştirilmesi gerektiğinde, Docker Compose dosyasında yapılan değişikliklerle birlikte adres değiştirilmelidir.


Uygulamanın Test Edilmesi

Uygulamanın doğru bir şekilde çalışması için test edilmesi oldukça önemlidir. Testler, uygulamanın beklenilen özellikleri sağlayıp sağlamadığını kontrol etmek için kullanılır. Docker Compose dosyası oluşturulduktan sonra uygulama test edilebilir.

Testler genellikle Python'un birim test modülü veya Flask veya Django'nun sağladığı test araçları kullanılarak yazılır. Testler, doğru şekilde yapılandırılan bir veritabanı ortamı gibi diğer bağımlılıkların da test edilmesini gerektirebilir. Test sırasında ücretsiz veritabanı hizmeti olarak ElephantSQL kullanılır.

Örneğin, Flask uygulaması için oluşturulan testler şunları içerebilir:

  • Uygulamanın oluşturulması
  • HTTP isteklerinin test edilmesi
  • API'ların doğru yanıt vermesinin test edilmesi
  • Formların doğru şekilde gönderilmesinin test edilmesi

Testler başarılı bir şekilde tamamlandığında, uygulama herhangi bir hata olmadan çalıştığından emin olunur ve kullanıma hazır hale gelir.


Sonuç

Docker Compose kullanarak birden fazla Python servisini bir araya getirmek, uygulamanın dağıtımını ve yönetimini kolaylaştırır. Bu yöntem sayesinde, tüm servisler tek bir komutla çalıştırılabilir ve tüm sistem verimli bir şekilde yönetilebilir.

Docker Compose dosyası, birden fazla konteynerin nasıl oluşturulacağını ve çalıştırılacağını belirleyerek sistemi özelleştirmenize olanak sağlar. Konteynerler arasındaki bağlantıyı sağlamak için Dockerfile dosyalarını kullanarak konteynerleri özelleştirebilirsiniz.

Ayrıca, Docker Compose ile uygulamanın test edilmesi ve doğru bir şekilde çalıştığından emin olunması mümkündür. Test sonuçlarına göre uygulamanın hata ayıklanması ve iyileştirilmesi mümkündür.

Docker Compose'un kullanımı, uygulamaların daha hızlı ve verimli bir şekilde geliştirilmesine yardımcı olur. Ayrıca, birden fazla Python servisini tek bir uygulama altında birleştirmek, kod okunabilirliği ve bakımını kolaylaştırır.

İşte Docker Compose ile birden fazla Python servisini birleştirmenin avantajları ve yol haritası! Bu yöntemi deneyerek, uygulamalarınızın performansını artırabilir ve daha hızlı geliştirme süreçleri elde edebilirsiniz.