Kako Dockerizirati Django aplikaciju na Linuxu
U ovom tutorijalu pokazat ću vam kako postaviti Docker okruženje za vaš Django projekt dok ste još u fazi razvoja. Iako koristim Ubuntu 18.04, koraci ostaju isti bez obzira na to koju Linux distribuciju koristite, osim instalacije Dockera i docker-composea.
U svakom tipičnom softverskom razvojnom projektu obično imamo proces razvoja koji obično započinje s pretpostavkom developera, preko VCS-a do produkcije. Pokušat ćemo se pridržavati pravila kako biste razumjeli gdje dolazi svaki DevOps alat.
DevOps se sve vrti oko uklanjanja fraze iz prošlih vremena: „Ali radi na mom laptopu!“. Docker containerizacija stvara proizvodno okruženje za vašu aplikaciju tako da se može implementirati bilo gdje, razvijajte jednom, implementirajte bilo gdje!
1) Instalirajte Docker Engine
Na vašem poslužitelju/računalu potreban je instaliran Docker runtime engine. Naše upute za instalaciju Dockera trebale bi biti od velike pomoći.
Kako instalirati Docker na CentOS/Debian/Ubuntu
2) Postavljanje okoline
Postavio/la sam GitHub repozitorij za ovaj projekt pod nazivom django-docker-dev-app. Slobodno ga forkajte ili klonirajte/preuzmite.
Prvo, stvorite mapu koja će sadržavati vaš projekt. Moja radna mapa se zove django-docker-dev-app. Uđite u mapu pomoću CD-a, a zatim je otvorite u svom IDE-u.
Docker datoteka
U okruženju s kontejnerima, sve aplikacije žive u kontejneru. Sami kontejneri sastavljeni su od nekoliko slika. Možete stvoriti vlastitu sliku ili koristiti druge slike s Docker Huba. Dockerfile je Docker tekstualni dokument koji Docker čita kako bi automatski stvorio/izgradio sliku. Naš Dockerfile će navesti sve ovisnosti koje su potrebne za naš projekt.
Napravite datoteku pod nazivom Dockerfile.
nano DockerfileU datoteku upišite sljedeće:
#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 userKreirajte datoteku requirements.txt i dodajte zahtjeve vašeg projekta.
Django
djangorestframeworkNapravite mapu app koja će sadržavati izvorni kod. Sada smo spremni za izradu naše slike!
mkdir appOtvorite terminal u svom projektu i upišite sljedeću naredbu za izgradnju naše slike:
docker build .
Na kraju Dockeru se kaže da provjeri ima li Dockerfile u istom direktoriju, ako biste datoteku imali na drugoj lokaciji, napisali bismo put do te datoteke. Docker će tada pozvati potrebne slike s Docker Huba kako bi stvorio vašu sliku.
Korištenje Docker Composea
Prema Docker dokumentaciji; Compose je alat za definiranje i pokretanje Docker aplikacija s više kontejnera. Uz Compose koristite YAML datoteku za konfiguriranje usluga svoje aplikacije. Zatim, jednim naredbom, kreirate i pokrećete sve usluge iz svoje konfiguracije.
- Instalirajte Docker Compose na Linux
Budući da će naš projekt u budućnosti zahtijevati mnogo usluga, bolje je stvoriti multi-container okruženje za njega. Na primjer, možda ćemo trebati kontejner za hosting našeg front-enda, drugi za hosting baze podataka i treći za hosting back-enda kada pređemo na arhitekturu mikroservisa. Napravit ćemo docker-compose datoteku koja će definirati različite usluge i kontejnere koje će naš projekt zahtijevati.
Napravite datoteku pod nazivom 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"Primijetite YAML format datoteke!!! Imamo jednu uslugu koja se zove ddda (Django Docker Dev App).
Sada smo spremni izgraditi našu uslugu:
docker-compose buildNakon uspješne izrade vidite: Successfully tagged djangodockerdevapp_ddda:latest
To znači da se naša slika zove djangodockerdevapp_ddda:latest, a naša usluga se zove ddda
Sad imajte na umu da još nismo kreirali naš Django projekt! Ako ste uspješno slijedili gore navedeni postupak, čestitamo, postavili ste Docker okruženje za svoj projekt! Sljedeće, započnite svoj razvoj radeći sljedeće:
Kreirajte Django projekt:
docker-compose run ddda sh -c “django-admin.py startproject app .”
Da biste pokrenuli svoj kontejner:
docker-compose upZatim posjetite http://localhost:8000/
Napravite migracije
$ docker-compose exec ddda python manage.py migrateOd sada nadalje pokretat ćete Django naredbe poput gornje naredbe, dodajući svoju naredbu nakon naziva servisa ddda.
To je za sada sve. Znam da je jednostavno i da postoji mnogo značajki koje nismo obradili, poput baze podataka, ali ovo je početak!
Projekt je dostupan na GitHubu ovdje.
Više o Dockeru:
- Izvoz i uvoz Docker slika/kontejnera
- Instalirajte Harbor Docker Image Registry na CentOS/Debian/Ubuntu
- Kako pokrenuti lokalne Kubernetes klastere u Dockeru


