FastAPI Uygulamalarını Docker ile Konteynerleştirme
Docker kullanarak FastAPI hizmetinizi konteynerleştirmeyi ve verimli, taşınabilir dağıtım kalıpları oluşturmayı öğrenin.
FastAPI Uygulamalarını Docker ile Konteynerleştirme, CoddyKit'te ücretsiz bir FastAPI Backend Development Bootcamp dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, FastAPI Backend Development Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.
Docker & FastAPI: Why Containerize?
Hoş geldiniz! Bu derste, Docker kullanarak FastAPI uygulamanızı nasıl paketleyeceğinizi öğreneceğiz. Bu, uygulamanızı inanılmaz derecede tutarlı hale getirir ve herhangi bir yere dağıtılmasını kolaylaştırır.
- Docker nedir? Yazılımı konteyner adı verilen paketler halinde sunmak için işletim sistemi düzeyinde sanallaştırmayı kullanan bir platformdur.
- Neden FastAPI için kullanılmalı? Uygulamanızı ve bağımlılıklarını bir araya getirerek "benim bilgisayarımda çalışıyordu" sorununu çözer.
Docker's Core: Images & Containers
Dockerlaştırmaya başlamadan önce, iki temel kavramı anlayalım:
- Docker İmajı (Image): Bir imajı bir plan veya şablon olarak düşünün. Uygulama kodunuzu, kütüphanelerinizi, bağımlılıklarınızı ve yapılandırmanızı içeren statik, değiştirilemez bir dosyadır.
- Docker Konteyneri (Container): Konteyner, bir imajın çalıştırılabilir bir örneğidir. Uygulamanızın ana sisteminizden tamamen ayrı, yalıtılmış bir ortamda çalıştığı yerdir.
Bir imajı oluşturursunuz (build), ardından ondan bir konteyner çalıştırırsınız (run).
A Basic FastAPI Service
Konteynerleştireceğimiz basit bir FastAPI uygulamasıyla başlayalım. Bu dosya main.py olarak adlandırılacak.
'Merhaba' mesajı döndüren tek bir uç noktası var.
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello from FastAPI!"}
# To run locally (without Docker):
# uvicorn main:app --host 0.0.0.0 --port 8000The Dockerfile: Starting Strong
Bir Dockerfile, bir kullanıcının bir imaj oluşturmak için komut satırında çağırabileceği tüm komutları içeren bir metin dosyasıdır. İmajı oluşturmak için kullandığınız tarifinizdir.
Bir temel imaj (base image) seçerek ve çalışma dizinimizi ayarlayarak başlıyoruz:
FROM: Temel imajı belirtir (örneğin, Python sürümü).WORKDIR: Konteyner içindeki mevcut çalışma dizinini ayarlar.
# Dockerfile
FROM python:3.9-slim-buster
WORKDIR /appFastAPI Dependencies: requirements.txt
FastAPI uygulamanızın çalışması için belirli Python paketlerine ihtiyacı vardır. Bunları bir requirements.txt dosyasında listeleriz. Bu dosya, Docker'a konteyner içinde hangi paketlerin kurulacağını söyler.
İşte basit FastAPI uygulamamız için tipik bir requirements.txt dosyası:
# requirements.txt
fastapi==0.104.1
uvicorn[standard]==0.24.0.post1Dockerfile: Installing Dependencies
Şimdi, bu bağımlılıkları kopyalayıp yüklemek için Dockerfile dosyamıza komutlar ekleyelim:
COPY requirements.txt .:requirements.txtdosyasını yerel makinenizden kapsayıcının/appdizinine kopyalar.RUN pip install ...:requirements.txtiçinde listelenen tüm paketleri yüklemek için komutu çalıştırır.--no-cache-dir, imaj boyutunu küçük tutmaya yardımcı olur.
# Dockerfile (continued)
FROM python:3.9-slim-buster
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txtDockerfile: App Code & Entrypoint
Son olarak, uygulama kodumuzu ekliyoruz ve Docker'a onu nasıl çalıştıracağını söylüyoruz:
COPY . .: Mevcut dizininizdeki kalan tüm dosyaları (main.pydahil) kapsayıcının/appdizinine kopyalar.EXPOSE 8000: Docker'a kapsayıcının 8000 numaralı portu dinlediğini bildirir. Bu bir güvenlik duvarı kuralı değil, bir dokümantasyondur.CMD [...]: Kapsayıcı başladığında çalıştırılacak komutu belirtir. Uvicorn, FastAPI uygulamanızı bu şekilde sunacaktır.
# Dockerfile (final)
FROM python:3.9-slim-buster
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]Building Your Docker Image
Dockerfile'ınız ve FastAPI uygulamanız hazır olduğuna göre, Docker imajını oluşturma zamanı!
Terminalinizi Dockerfile ve main.py dosyanızın bulunduğu dizinde açın ve ardından şu komutu çalıştırın:
docker build .: Docker'a, mevcut dizindeki Dockerfile'ı kullanarak bir imaj oluşturmasını söyler.-t myfastapi-app: İmajı, kolayca referans alabilmek için bir isimle (myfastapi-app) etiketler.
# Terminal Command
docker build -t myfastapi-app .Running Your FastAPI Container
Görüntü oluşturulduktan sonra, FastAPI uygulamanızı bir kapsayıcı içinde çalıştırabilirsiniz!
docker run komutunu kullanın:
-p 8000:8000: Bu, ana makinenizdeki 8000 numaralı bağlantı noktasını kapsayıcı içindeki 8000 numaralı bağlantı noktasına eşler.myfastapi-app: Az önce oluşturduğumuz görüntünün adı.
Çalıştırdıktan sonra tarayıcınızı açın veya http://localhost:8000 adresini ziyaret etmek için curl kullanın.
# Terminal Command
docker run -p 8000:8000 myfastapi-appIntroducing Docker Compose
Birden fazla hizmete sahip uygulamalar için (FastAPI uygulaması ve veritabanı gibi), Docker Compose yönetimi kolaylaştırır. Bir YAML dosyası kullanarak çok kapsayıcılı Docker uygulamalarını tanımlamanıza ve çalıştırmanıza olanak tanır.
Birden fazla docker run komutu çalıştırmak yerine, her şeyi docker-compose.yml dosyasında tanımlayıp docker-compose up komutunu kullanabilirsiniz.
# docker-compose.yml (simplified)
version: '3.8'
services:
web:
build: .
ports:
- "8000:8000"Dockerfile Command Check
Yerel makinenizdeki dosyaları veya dizinleri Docker görüntüsüne kopyalamak için hangi Dockerfile komutu kullanılır?
Recap: FastAPI in a Box!
Harika iş çıkardın! FastAPI uygulamanı Docker'ize etmenin temellerini öğrendin. Şunları ele aldık:
- Docker İmajları (Images) ve Konteynerleri (Containers) arasındaki fark.
FROM,WORKDIR,COPY,RUN,EXPOSEveCMDgibi komutlarla bir Dockerfile yazmak.- FastAPI uygulamanı bir Docker konteynerinde oluşturmak (build) ve çalıştırmak (run).
- Çok servisli uygulamalar için Docker Compose'a kısa bir giriş.
Bu beceri, tutarlı ve ölçeklenebilir dağıtımlar için çok önemlidir!
Sıkça Sorulan Sorular
“FastAPI Uygulamalarını Docker ile Konteynerleştirme” dersi ücretsiz mi?
Evet — “FastAPI Uygulamalarını Docker ile Konteynerleştirme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve FastAPI Backend Development Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.
“FastAPI Uygulamalarını Docker ile Konteynerleştirme” dersinde ne öğreneceğim?
Docker kullanarak FastAPI hizmetinizi konteynerleştirmeyi ve verimli, taşınabilir dağıtım kalıpları oluşturmayı öğrenin. FastAPI Backend Development Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
FastAPI Backend Development Bootcamp öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te FastAPI Backend Development Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“FastAPI Uygulamalarını Docker ile Konteynerleştirme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu FastAPI Backend Development Bootcamp dersinde kod yazıp çalıştırabilir miyim?
Evet. Her FastAPI Backend Development Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- FastAPI Uygulamalarını Docker ile Konteynerleştirme
- Gunicorn ve Uvicorn ile Dağıtım
- Bulut Dağıtım Stratejileri
- Ortam Değişkenlerini ve Gizli Bilgileri Yönetme