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:

  1. Crear un fitxer Dockerfile per a una aplicació Django.
  2. Configurar docker-compose per gestionar múltiples serveis.
  3. Construir i executar contenidors Docker per a una aplicació Django.

Requisits Previs

Abans de començar, assegura't de tenir instal·lats:

  1. 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 fitxer requirements.txt al directori de treball.
  • RUN pip install --no-cache-dir -r requirements.txt: Instal·la les dependències especificades en requirements.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.

  1. 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ó de docker-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 el Dockerfile 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 servei db s'iniciï abans del servei web.

  1. 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:

docker-compose build

Executar els Contenidors

Executa la següent comanda per iniciar els serveis definits en docker-compose.yml:

docker-compose up

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

  1. Crea un fitxer Dockerfile seguint l'exemple proporcionat.
  2. Crea un fitxer docker-compose.yml seguint l'exemple proporcionat.
  3. Executa docker-compose build per construir els contenidors.
  4. Executa docker-compose up per iniciar els serveis.
  5. 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.

© Copyright 2024. Tots els drets reservats