Yeni bir Django projesi başlatmak için django-admin
komutunu kullanmanız gerekir. Bu komut, Django uygulamanız için bir proje dizini ve bazı temel dosyalar oluşturmanıza olanak sağlar. Örneğin my_project
adında bir proje oluşturmak istiyorsanız terminalinizde şu komutu çalıştırabilirsiniz:
django-admin startproject my_project
├──
manage.py
dosyası, projeniz için geliştirme sunucusunu çalıştırma, veritabanı geçişleri oluşturma ve kodunuzu test etme gibi çeşitli görevleri gerçekleştirmenize olanak tanıyan bir komut dosyasıdır. project/
dizini projeniz için ayarları ve yapılandırma dosyalarını içerir.
settings.py
dosyası, projenizin veritabanı bağlantısı, yüklü uygulamalar ve ara katman yazılımı gibi ana ayarlarını tanımlar. urls.py
dosyası, projenizin URL'lerini uygulamalarınızın görünümleriyle eşler.
python manage.py runserver
manage.py
: Projenizi yönetmek için uygulama oluşturma, veritabanını taşıma ve kodunuzu test etme gibi çeşitli komutlar sağlayan bir komut dosyasıdır.
project/
: Projeniz için ayarları ve yapılandırma dosyalarını içeren bir dizin. Bu dizindeki ana dosyalar şunlardır:
`settings.py`: A file that defines the main settings for your project, such as the database connection, the installed apps, and the middleware. You can customize this file to suit your needs and preferences. `urls.py`: A file that maps the URLs of your project to the views of your apps. You can define different URL patterns for different parts of your web application.
apps/
: Projenizi oluşturan tüm Django uygulamalarını içeren bir dizin. Her Django uygulaması, web uygulamanız için belirli bir işlevsellik veya özellik sağlayan ayrı bir Python paketidir. Kendi uygulamalarınızı oluşturabilir veya üçüncü taraf kaynaklardaki mevcut uygulamaları kullanabilirsiniz.
python manage.py runserver
python manage.py test
Ran 1 test in 0.001s Ok
FROM python:3.9 #Install Django and other required packages RUN pip install django # Copy the Django project files into the image COPY ./app # Set the working directory WORKDIR /app # Start the Django development server CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
version: "3.9" services: web: build: ports: -"8000:8000" volumes -./:/app db: image: postgres:14.0-alpine volumes: -./postgres:/var/lib/postgresql/data
Bu docker-compose.yml dosyası iki hizmeti tanımlar: web
ve db
. web
servisi, önceki bölümde oluşturduğumuz Docker dosyasından Docker imajını oluşturacaktır. web
hizmeti ayrıca Django geliştirme sunucusuna erişebilmemiz için ana makinedeki 8000 numaralı bağlantı noktasını da açığa çıkaracaktır.
db
hizmeti resmi PostgreSQL Docker görüntüsünü kullanacaktır. db
hizmeti ayrıca ana makinedeki postgres
dizinini konteynerin içindeki /var/lib/postgresql/data
dizinine bağlayacaktır. Bu, veritabanı dosyalarının konteyner yeniden başlatmaları arasında kalıcı olmasını sağlayacaktır.
docker-compose up -d
Ayrıca //localhost:8000/admin/
adresinden Django yönetici sayfasında oturum açabilirsiniz. Kullanıcı adı ve şifre varsayılan olarak admin
ve admin
.
- Profil sayfanıza gidin ve Depolar'ın yanındaki Yeni düğmesine tıklayın.
- Deponuza django-docker-app
gibi bir ad verin ve isteğe bağlı olarak bir açıklama ekleyin.
- Depo oluştur düğmesine tıklayın.
- Terminaldeki Django proje klasörünüze gidin ve deponuzun mevcut durumunu görmek için git status
yazın. Bunun gibi bir şey görmelisiniz:
On branch main Your branch is up to date with 'origin/main'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: Dockerfile modified: docker-compose.yml modified: requirements.txt no changes added to commit (use "git add" and/or "git commit -a")
Bu, taahhüt için hazırlanmayan bazı değiştirilmiş dosyalarınız olduğu anlamına gelir. Bunları taahhüt için hazırlamak için git add
komutunu kullanmanız gerekir.
- git add
yazın. değiştirilen tüm dosyaları işleme koymak için hazırlamak. Alternatif olarak, aşamalandırmak istediğimiz dosya adlarını git add
Dockerfile docker-compose.yml
requirements.txt
gibi belirtebilirsiniz.
- Depomuzun güncel durumunu görmek için git status
tekrar yazın. Bunun gibi bir şey görmelisiniz:
On branch main Your branch is up to date with 'origin/main'. Changes to be committed: (use "git restore --staged <file>..." to unstage) modified: Dockerfile modified: docker-compose.yml modified: requirements.txt
Bu, taahhüt için hazırlanmış bazı değişiklikleriniz olduğu anlamına gelir. Bunları taahhüt etmek için git commit
komutunu kullanmanız gerekir.
- Aşamalı değişiklikleri ne yaptığımızı açıklayan bir mesajla birlikte uygulamak için git commit -m "Add Docker configuration files"
yazın. Alternatif olarak -m
işaretini atlayabilir ve git commit
yazdıktan sonra açılacak düzenleyiciye daha uzun bir mesaj girebilirsiniz.
- Depomuzun son durumunu görmek için git status
tekrar yazın. Bunun gibi bir şey görmelisiniz:
On branch main Your branch is ahead of 'origin/main' by 1 commit. (use "git push" to publish your local commits) nothing to commit, working tree clean
Bu, henüz uzak depoya aktarılmayan bir taahhüdünüz olduğu anlamına gelir. Push etmek için git push
komutunu kullanmanız gerekir.
- Yerel taahhüdünüzü GitHub'daki uzak depoya göndermek için git push origin main
yazın.
Alternatif olarak, göndermek istediğiniz uzak adı ve dal adını git push origin main
gibi) belirtebilirsiniz.
- gidin ve Kayıt Ol butonuna tıklayın.
- Ad, e-posta, şifre vb. gibi gerekli bilgileri girin. - Python gibi bir birincil geliştirme dili seçin.- Ücretsiz Hesap Oluştur butonuna tıklayın.
- E-postamızı kontrol edin ve hesabımızı doğrulamak için bağlantıya tıklayın.
- Bir terminal açın ve kurulumun başarılı olduğunu doğrulamak için heroku --version
yazın. Bunun gibi bir şey görmelisiniz:
heroku/7.59.0 win32-x64 node-v12.21.0
- Terminaldeki Django proje klasörünüze gidin ve Heroku CLI aracını kullanarak Heroku hesabınızda oturum açmak için heroku login
yazın. Kimliğinizi doğrulamak için e-posta adresinizi ve şifrenizi girmeniz veya bir web tarayıcısı kullanmanız istenebilir.
- heroku create django-docker-app
django-docker-app
yazın. Alternatif olarak, adı atlayabilir ve Heroku'nun sizin için rastgele bir ad oluşturmasına izin verebilirsiniz. Bunun gibi bir şey görmelisiniz:
Creating ⬢ django-docker-app... done //django-docker-app.herokuapp.com/ | //git.heroku.com/django-docker-app.git
- Django projemizin SECRET_KEY ayarına yönelik bir ortam değişkeni ayarlamak için heroku config:set SECRET_KEY=<your_secret_key>
yazın. <your_secret_key>
öğesini gibi bir araç kullanarak oluşturabileceğiniz rastgele bir dizeyle değiştirmeniz gerekir.
Alternatif olarak, settings.py dosyanızda bulunan mevcut gizli anahtarı da kullanabilirsiniz ancak bu, güvenlik nedeniyle önerilmez.
- Heroku uygulamanıza ücretsiz bir PostgreSQL veritabanı eklentisi eklemek için heroku addons:create heroku-postgresql:hobby-dev
yazın. Bu, Django projeniz için yeni bir veritabanı oluşturacak ve Django projenizin DATABASE_URL ayarı için bir ortam değişkeni ayarlayacaktır. Bunun gibi bir şey görmelisiniz:
Creating heroku-postgresql:hobby-dev on ⬢ django-docker-app... free Database has been created and is available ! This database is empty. If upgrading, you can transfer ! data from another database with pg:copy Created postgresql-curved-12345 as DATABASE_URL Use heroku addons:docs heroku-postgresql to view documentation
Bu, PostgreSQL-curved-12345 adında ve DATABASE_URL URL'sinde bir PostgreSQL veritabanı eklentisi eklediğiniz anlamına gelir.
- Heroku uygulamanız için ayarladığınız ortam değişkenlerinin listesini görmek için heroku config
yazın. Bunun gibi bir şey görmelisiniz:
=== django-docker-app Config Vars DATABASE_URL: postgres://<username>: <password>@<host>:<port>/<database> SECRET_KEY: <your_secret_key>
Bu, Django proje ayarlarınızda kullanabileceğiniz DATABASE_URL ve SECRET_KEY adında iki ortam değişkeniniz olduğu anlamına gelir.
Django projenizi ' heroku
' komutunu kullanarak Heroku'ya nasıl dağıtırsınız ?
heroku
komutunu kullanarak Django projemizi Heroku'ya dağıtmak için şu adımları izlemeniz gerekir:
- Terminaldeki Django proje klasörünüze gidin ve Heroku CLI aracını kullanarak Heroku Container Registry'de oturum açmak için heroku container:login
yazın. Bu, Docker imajımızı Heroku'ya aktarmanıza olanak tanıyacaktır.
- Docker görüntünüzü oluşturmak ve Heroku'ya göndermek için heroku container:push web -a django-docker-app
yazın. Bu durumda Heroku uygulamanızın adını Django-docker-app olarak belirtmeniz gerekir. Bunun gibi bir şey görmelisiniz:
=== Building web (Dockerfile) Sending build context to Docker daemon 1.024kB Step 1/9 : FROM python:3.9-slim ---> 7f5b6ccd03e9 Step 2/9 : ENV PYTHONUNBUFFERED 1 ---> Using cache ---> 64b5d0e40a22 Step 3/9 : RUN mkdir /code ---> Using cache ---> 4d8c638f2b6c Step 4/9 : WORKDIR /code ---> Using cache ---> e69c02a028cd Step 5/9 : COPY requirements.txt /code/ ---> Using cache ---> 8f0f3e0f2d8c Step 6/9 : RUN pip install -r requirements.txt ---> Using cache ---> 0f7b497d81ed Step 7/9 : COPY . /code/ ---> Using cache ---> c0a8e9a32b16 Step 8/9 : EXPOSE 8000 ---> Using cache ---> a1d36a4a2da4 Step 9/9 : CMD ["gunicorn", "django_docker.wsgi", "--bind", "0.0.0.0:8000"] ---> Using cache ---> f7f3c0418a1d Successfully built f7f3c0418a1d Successfully tagged registry.heroku.com/django-docker-app/web:latest === Pushing web (Dockerfile) The push refers to repository [registry.heroku.com/django-docker-app/web] f7f3c0418a1d: Pushed latest: digest: sha256:6cbbf22cf6aa60e0343e6d8e7c4c2eeb2e cb8fd5e82a42dfe5f4aeeb15af89ec size: 528 Your image has been successfully pushed. You can now release it with the 'container:release' command.
- Docker imajımızı Heroku uygulamamıza yayınlamak için heroku container:release web -a django-docker-app
yazın. Bunun gibi bir şey görmelisiniz:
Releasing images web to django-docker-app... done
- Heroku uygulamanızda veritabanı geçişlerini çalıştırmak için heroku run python manage.py migrate -a django-docker-app
yazın. Bu, PostgreSQL veritabanında Django projeniz için gerekli tabloları ve dizinleri oluşturacaktır. Bunun gibi bir şey görmelisiniz:
Running python manage.py migrate on ⬢ django-docker-app... up, run.1234 (Free) Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions, polls Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying auth.0012_alter_user_first_name_max_length... OK Applying polls.0001_initial... OK Applying sessions.0001_initial... OK
- Konuşlandırılmış web uygulamamızı bir web tarayıcısında açmak için heroku open -a django-docker-app
yazın. Django projemizin Heroku üzerinde çalıştığını görmelisiniz.
heroku
komutunu kullanarak Django projenizi Heroku'ya başarıyla dağıttınız. Artık web uygulamanızın keyfini çıkarabilir ve başkalarıyla paylaşabilirsiniz.
Sonrakini Okuyun: CI/CD, hızlı ve güvenilir yazılım teslimi için gereklidir. CI/CD işlem hattınızı maksimum verimlilik sağlayacak şekilde optimize etmek için doğru araçları seçin, iş akışınızı kolaylaştırın, otomatik test ve QA kullanın, derlemeleri paralelleştirin, izleme ve geri bildirim döngülerini kullanın, güvenlik kontrolleri gerçekleştirin ve işlem hattınızı sürekli olarak iyileştirin. Devamını oku
Ayrıca Okuyun: DockerCon 2023'te Öğrendiğimiz Her Şey