Introducció
Docker és una eina que permet crear, desplegar i executar aplicacions dins de contenidors. Els contenidors són entorns aïllats que contenen tot el necessari per executar una aplicació, incloent-hi el codi, les biblioteques i les dependències. Utilitzar Docker amb Django pot simplificar el procés de desplegament i assegurar que l'aplicació funcioni de manera consistent en diferents entorns.
Objectius
En aquesta secció, aprendràs a:
- Crear un fitxer Dockerfile per a una aplicació Django.
- Configurar
docker-compose
per gestionar múltiples serveis. - Construir i executar contenidors Docker per a una aplicació Django.
Requisits Previs
Abans de començar, assegura't de tenir instal·lats:
- Docker: Instal·lació de Docker
- Docker Compose: Instal·lació de Docker Compose
- Creació del Dockerfile
El Dockerfile
és un fitxer de text que conté les instruccions per construir una imatge Docker. A continuació es mostra un exemple de Dockerfile
per a una aplicació Django:
# Utilitza una imatge base oficial de Python FROM python:3.9-slim # Estableix el directori de treball dins del contenidor WORKDIR /app # Copia el fitxer de requisits al directori de treball COPY requirements.txt . # Instal·la les dependències RUN pip install --no-cache-dir -r requirements.txt # Copia el codi de l'aplicació al directori de treball COPY . . # Exposa el port que utilitzarà l'aplicació EXPOSE 8000 # Comanda per executar l'aplicació CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
Explicació del Dockerfile
FROM python:3.9-slim
: Utilitza una imatge base de Python 3.9.WORKDIR /app
: Estableix/app
com a directori de treball dins del contenidor.COPY requirements.txt .
: Copia el fitxerrequirements.txt
al directori de treball.RUN pip install --no-cache-dir -r requirements.txt
: Instal·la les dependències especificades enrequirements.txt
.COPY . .
: Copia tot el codi de l'aplicació al directori de treball.EXPOSE 8000
: Exposa el port 8000 per accedir a l'aplicació.CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
: Executa l'aplicació Django.
- Configuració de docker-compose
docker-compose
és una eina per definir i executar aplicacions multi-contenidor. Crearem un fitxer docker-compose.yml
per gestionar la nostra aplicació Django i una base de dades PostgreSQL.
Exemple de docker-compose.yml
version: '3.8' services: db: image: postgres:13 environment: POSTGRES_DB: mydatabase POSTGRES_USER: myuser POSTGRES_PASSWORD: mypassword volumes: - postgres_data:/var/lib/postgresql/data web: build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - .:/app ports: - "8000:8000" depends_on: - db volumes: postgres_data:
Explicació del docker-compose.yml
version: '3.8'
: Especifica la versió dedocker-compose
.services
: Defineix els serveis que formen part de l'aplicació.db
: Servei de base de dades PostgreSQL.image: postgres:13
: Utilitza la imatge oficial de PostgreSQL 13.environment
: Variables d'entorn per configurar la base de dades.volumes
: Defineix un volum per persistir les dades de la base de dades.
web
: Servei de l'aplicació Django.build: .
: Construeix la imatge utilitzant elDockerfile
del directori actual.command
: Comanda per executar l'aplicació.volumes
: Monta el directori actual dins del contenidor.ports
: Mapeja el port 8000 del contenidor al port 8000 de l'amfitrió.depends_on
: Assegura que el serveidb
s'iniciï abans del serveiweb
.
- Construir i Executar els Contenidors
Ara que tenim el Dockerfile
i el docker-compose.yml
configurats, podem construir i executar els contenidors.
Construir els Contenidors
Executa la següent comanda per construir els contenidors:
Executar els Contenidors
Executa la següent comanda per iniciar els serveis definits en docker-compose.yml
:
Aquesta comanda iniciarà els serveis db
i web
. Podràs accedir a l'aplicació Django a través del navegador web a http://localhost:8000
.
Exercici Pràctic
Objectiu
Configurar una aplicació Django amb Docker i Docker Compose, incloent-hi una base de dades PostgreSQL.
Passos
- Crea un fitxer
Dockerfile
seguint l'exemple proporcionat. - Crea un fitxer
docker-compose.yml
seguint l'exemple proporcionat. - Executa
docker-compose build
per construir els contenidors. - Executa
docker-compose up
per iniciar els serveis. - Accedeix a l'aplicació Django a
http://localhost:8000
.
Solució
Si has seguit els passos correctament, hauràs configurat i executat una aplicació Django amb Docker i Docker Compose. Si tens problemes, revisa els fitxers Dockerfile
i docker-compose.yml
per assegurar-te que no hi ha errors de sintaxi.
Conclusió
En aquesta secció, has après a utilitzar Docker per conteniritzar una aplicació Django i a utilitzar Docker Compose per gestionar múltiples serveis. Aquesta configuració simplifica el desplegament i assegura que l'aplicació funcioni de manera consistent en diferents entorns. En el següent tema, explorarem les millors pràctiques de seguretat per a aplicacions Django.
Curs de Desenvolupament Web amb Django
Mòdul 1: Introducció a Django
- Què és Django?
- Configuració de l'Entorn de Desenvolupament
- Creació del teu Primer Projecte Django
- Comprensió de l'Estructura del Projecte Django
Mòdul 2: Conceptes Bàsics de Django
- Aplicacions Django i Estructura del Projecte
- Enrutament d'URL i Vistes
- Plantilles i Fitxers Estàtics
- Models i Bases de Dades
- Interfície d'Administració de Django
Mòdul 3: Django Intermedi
Mòdul 4: Django Avançat
- Consultes Avançades amb Django ORM
- Models d'Usuari Personalitzats
- Senyalitzacions de Django
- Proves en Django
- Optimització del Rendiment