Cara Dockerize Aplikasi Django di Linux
Dalam tutorial ini, saya akan menunjukkan kepada anda cara untuk menyediakan persekitaran Docker untuk projek Django anda ketika masih dalam fasa pembangunan. Walaupun saya menggunakan Ubuntu 18.04, langkah-langkahnya tetap sama bagi mana-mana distro Linux yang anda gunakan kecuali untuk pemasangan Docker dan docker-compose.
Dalam mana-mana projek pembangunan perisian biasa, kita biasanya mempunyai proses pembangunan yang biasanya bermula dari premis pembangun ke VCS hingga ke pengeluaran. Kami akan cuba mematuhi peraturan supaya anda memahami di mana setiap alat DevOps digunakan.
DevOps adalah mengenai menghapuskan frasa zaman dahulu; "Tapi ia berfungsi di komputer riba saya!". Penggunaan container Docker mencipta persekitaran penghasilan untuk aplikasi anda supaya ia boleh digunakan di mana-mana sahaja, Bangunkan sekali, guna di mana-mana!
1) Pasang Docker Engine
Anda perlu memasang enjin runtime Docker pada pelayan/Desktop anda. Panduan pemasangan Docker kami sepatutnya sangat membantu.
Cara memasang Docker pada CentOS/Debian/Ubuntu
2) Persediaan Persekitaran
Saya telah menyediakan repositori GitHub untuk projek ini yang dipanggil django-docker-dev-app. Sila bebas untuk fork atau clone/muat turunnya.
Pertama, buat folder untuk menempatkan projek anda. Workspace folder saya dipanggil django-docker-dev-app. Masuk ke folder tersebut kemudian buka ia dalam IDE anda.
Fail Docker
Dalam persekitaran berasaskan kontena, semua aplikasi berada dalam kontena. Kontena itu sendiri terdiri daripada beberapa imej. Anda boleh mencipta imej sendiri atau menggunakan imej lain daripada Docker Hub. Dockerfile ialah dokumen teks Docker yang dibaca oleh Docker untuk secara automatik mencipta/membina imej. Dockerfile kami akan menyenaraikan semua kebergantungan yang diperlukan oleh projek kami.
Buat fail bernama Dockerfile.
nano DockerfileDalam jenis fail, taip yang berikut:
#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 userBuat fail requirements.txt dan tambah keperluan projek anda.
Django
djangorestframeworkBuat folder app yang akan menempatkan kod sumber. Sekarang kita bersedia untuk membina imej kita!
mkdir appBuka terminal dalam projek anda dan taip arahan berikut untuk membina imej kami:
docker build .
Di hujungnya, memberitahu Docker untuk memeriksa Dockerfile di direktori yang sama, jika anda mempunyai fail itu di lokasi lain, kami akan menulis laluan ke fail itu. Docker kemudian akan memanggil imej yang diperlukan dari Docker Hub untuk membuat imej anda.
Menggunakan Docker Compose
Daripada dokumen Docker; Compose adalah alat untuk mentakrif dan menjalankan aplikasi Docker berbilang kontena. Dengan Compose, anda menggunakan fail YAML untuk mengkonfigurasi perkhidmatan aplikasi anda. Kemudian, dengan satu arahan sahaja, anda boleh mencipta dan memulakan semua perkhidmatan daripada konfigurasi anda.
- Pasang Docker Compose pada Linux
Kerana projek kami akan memerlukan banyak perkhidmatan pada masa hadapan, adalah lebih baik untuk membuat persekitaran multi-container untuknya. Sebagai contoh, kami mungkin memerlukan satu kontena untuk menampung bahagian hadapan (front end), satu lagi untuk menampung pangkalan data dan satu lagi untuk menampung bahagian belakang (backend) apabila kami beralih ke seni bina mikroperkhidmatan. Kami akan membuat fail docker-compose yang akan menentukan pelbagai perkhidmatan dan kontena yang diperlukan oleh projek kami.
Buat fail bernama docker-compose.yml
version: "3"
services:
ddda:
build:
context: .
ports:
- "8000:8000"
volumes:
- ./app:/app
command: >
sh -c "python manage.py runserver 0.0.0.0:8000"Perhatikan format fail YAML!!! Kami mempunyai satu perkhidmatan yang dipanggil ddda (Aplikasi Pembangunan Docker Django).
Kami kini bersedia untuk membina perkhidmatan kami:
docker-compose buildSelepas binaan berjaya anda akan melihat: Berjaya menanda djangodockerdevapp_ddda:latest
Ini bermakna imej kami dipanggil djangodockerdevapp_ddda:latest dan perkhidmatan kami dipanggil ddda
Sekarang ambil perhatian bahawa kita masih belum mencipta projek Django kita! Jika anda telah mengikuti prosedur di atas dengan berjaya, tahniah, anda telah menyediakan persekitaran Docker untuk projek anda!. Seterusnya, mulakan pembangunan anda dengan melakukan perkara berikut:
Cipta projek Django:
docker-compose run ddda sh -c “django-admin.py startproject app .”
Untuk menjalankan bekas anda:
docker-compose upKemudian lawati http://localhost:8000/
Buat migrasi
$ docker-compose exec ddda python manage.py migrateMulai sekarang anda akan menjalankan perintah Django seperti perintah di atas, dengan menambah perintah anda selepas nama perkhidmatan ddda.
Itu saja buat masa ini. Saya tahu ia mudah dan terdapat banyak ciri yang belum kita bahas seperti pangkalan data, tetapi ini adalah permulaan!
Projek ini boleh didapati di GitHub di sini.
Lebih lanjut tentang Docker:
- Eksport dan Import Imej/Kontena Docker
- Pasang Harbor Docker Image Registry pada CentOS/Debian/Ubuntu
- Cara Menjalankan Kluster Kubernetes Tempatan dalam Docker


