Linux Üzerinde Django Uygulamasını Dockerize Etme
Bu öğreticide, Django projeniz için geliştirme aşamasındayken nasıl bir Docker ortamı kuracağınızı göstereceğim. Ubuntu 18.04 kullanıyor olsam da, Docker ve docker-compose kurulumu hariç, adımlar kullandığınız Linux dağıtımı ne olursa olsun aynı kalır.
Herhangi bir tipik yazılım geliştirme projesinde, genellikle geliştirme süreci, geliştirici ortamından VCS'ye ve oradan üretime doğru başlar. Her bir DevOps aracının nerede devreye girdiğini anlamanız için kurallara uymaya çalışacağız.
DevOps, geçmişte sıkça kullanılan 'Ama benim bilgisayarımda çalışıyor!' ifadesini ortadan kaldırmakla ilgilidir. Docker konteynerleştirmesi, uygulamanız için üretim ortamını oluşturur, böylece her yere dağıtılabilir; bir kez geliştirin, her yere dağıtın!
1) Docker Motorunu Yükleyin
Sunucunuza/Masanıza bir Docker çalışma zamanı motoru kurmanız gerekiyor. Docker kurulum kılavuzlarımız size büyük ölçüde yardımcı olacaktır.
CentOS/Debian/Ubuntu'da Docker nasıl kurulur
2) Ortam Kurulumu
Bu proje için django-docker-dev-app adlı bir GitHub deposu oluşturdum. Bunu rahatça çatallayabilir veya kopyalayabilir/indirebilirsiniz.
Öncelikle projenizi tutacak klasörü oluşturun. Benim klasörümün adı django-docker-dev-app. Klasöre gidin ve ardından IDE'nizde açın.
Dockerfile
Konteyner tabanlı bir ortamda, tüm uygulamalar bir konteyner içinde yaşar. Konteynerler ise birden fazla imajdan oluşur. Kendi imajınızı oluşturabilir veya Docker Hub'dan diğer imajları kullanabilirsiniz. Dockerfile, Docker'ın bir imajı otomatik olarak oluşturmak/derlemek için okuduğu Docker metin belgesidir. Dockerfile'ımız, projemiz için gereken tüm bağımlılıkları listeleyecektir.
Dockerfile adında bir dosya oluşturun.
nano DockerfileDosya türüne aşağıdakini yazın:
#base image
FROM python:3.9-alpine
#maintainer
LABEL Author="CodeGenes"
# The enviroment variable ensures that the python output is set straight
# to the terminal with out buffering it first
ENV PYTHONBUFFERED 1
#copy requirements file to image
COPY ./requirements.txt /requirements.txt
#let pip install required packages
RUN pip install -r requirements.txt
#directory to store app source code
RUN mkdir /app
#switch to /app directory so that everything runs from here
WORKDIR /app
#copy the app code to image working directory
COPY ./app /app
#create user to run the app(it is not recommended to use root)
#we create user called user with -D -> meaning no need for home directory
RUN adduser -D user
#switch from root to user to run our app
USER userrequirements.txt dosyasını oluşturun ve proje gereksinimlerinizi ekleyin.
Django
djangorestframeworkKaynak kodu tutacak app klasörünü oluşturun. Artık imajımızı oluşturmaya hazırız!
mkdir appProjenizde bir terminal açın ve imajımızı oluşturmak için aşağıdaki komutu yazın:
docker build .
Sonunda Docker'a aynı dizinde Dockerfile olup olmadığını kontrol etmesini söylüyor; dosyanız farklı bir konumda olsaydı, o dosyanın yolunu yazardık. Docker daha sonra görüntünüzü oluşturmak için gerekli olan görüntüleri Docker Hub'dan çağıracaktır.
Docker Compose Kullanımı
Docker dokümanlarından; Compose, çoklu konteyner Docker uygulamalarını tanımlamak ve çalıştırmak için bir araçtır. Compose ile uygulamanızın servislerini yapılandırmak için bir YAML dosyası kullanırsınız. Ardından, tek bir komutla yapılandırmanızdaki tüm servisleri oluşturur ve başlatırsınız.
- Linux'ta Docker Compose'u Kur
Çünkü projemiz gelecekte birçok hizmet gerektirecek, bu yüzden onun için çoklu konteyner ortamı oluşturmak daha iyi olur. Örneğin, ön yüzümüzü barındıracak bir konteyner, bir veritabanını barındıracak başka bir konteyner ve mikro hizmet mimarisine geçtiğimizde bir arka ucu barındıracak başka bir konteyner gerektirebiliriz. Projemizin gerektireceği çeşitli hizmetleri ve konteynerleri tanımlayacak bir docker-compose dosyası oluşturacağız.
docker-compose.yml adlı bir dosya oluşturun
version: "3"
services:
ddda:
build:
context: .
ports:
- "8000:8000"
volumes:
- ./app:/app
command: >
sh -c "python manage.py runserver 0.0.0.0:8000"YAML dosya formatına dikkat edin!!! ddda (Django Docker Dev App) adlı bir servisimiz var.
Artık hizmetimizi oluşturmaya hazırız:
docker-compose buildBaşarılı bir derlemeden sonra şunu görürsünüz: Successfully tagged djangodockerdevapp_ddda:latest
Bu, imajımızın djangodockerdevapp_ddda:latest olarak adlandırıldığı ve servisimizin ddda olarak adlandırıldığı anlamına geliyor.
Şimdi henüz Django projemizi oluşturmadığımızı unutmayın! Eğer yukarıdaki adımları başarıyla takip ettiyseniz, tebrikler, projeniz için Docker ortamını kurdunuz! Sırada, geliştirmeye başlamak için aşağıdakileri yapın:
Django projesini oluşturun:
docker-compose run ddda sh -c “django-admin.py startproject app .”
Konteynerinizi çalıştırmak için:
docker-compose upSonra http://localhost:8000/ adresini ziyaret edin
Göçleri oluştur
$ docker-compose exec ddda python manage.py migrateBundan sonra Django komutlarını yukarıdaki komut gibi çalıştıracaksınız, komutunuzu servis adı ddda'nın sonuna ekleyerek.
Şimdilik bu kadar. Biliyorum, bu basit ve henüz ele almadığımız birçok özellik var, mesela bir veritabanı, ama bu bir başlangıç!
Proje GitHub'da burada mevcut.
Docker hakkında daha fazlası:
- Docker Görüntülerini/Konteynerlerini Dışa ve İçe Aktarma
- CentOS/Debian/Ubuntu Üzerine Harbor Docker Görüntü Kaydı Kurulumu
- Docker'da Yerel Kubernetes Küme Nasıl Çalıştırılır


