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, 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.
Projenizin settings.py dosyasına gidin ve
INSTALLED_APPS
listesine'django.contrib.admin'
adlı uygulamayı ekleyin.urls.py
dosyasını açın ve aşağıdaki kodu en üst satıra ekleyin:from django.contrib import admin
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),]
Ş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.