Configurando un Proyecto de Django con Docker y Docker Compose
Después de algunos problemas con la instalación de versiones recientes de Python usando pyenv (¡intentar instalar Python 3.12 fue un dolor de cabeza!), decidí simplificar mi flujo de trabajo y configurar mi entorno de desarrollo usando Docker y Docker Compose.
Para esta guía, te recomiendo tener Docker y Docker Compose ya instalados. Puedes usar la terminal o herramientas como Visual Studio Code, que ofrece una interfaz muy útil para gestionar proyectos Docker.
Paso 1: Configurar la Estructura de Archivos del Proyecto
- Ubícate en el directorio donde deseas crear el proyecto (en mi caso,
Workspace
). - Crea el directorio del proyecto y navega a él.
- Crea los archivos y carpetas iniciales.
$ cd ~/Workspace $ mkdir proyecto $ proyecto $ touch Dockerfile $ touch docker-compose.yml $ touch requirements.txt $ mkdir app/
Paso 2: Configurar el Dockerfile, docker-compose.yml y requirements.txt
Dockerfile
Este archivo define cómo se construirá la imagen de Docker para el proyecto Django.
FROM python:3.12-slim WORKDIR /proyecto COPY requirements.txt requirements.txt RUN pip install --no-cache-dir -r requirements.txt COPY . . EXPOSE 8000 CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
docker-compose.yml
Aquí configuramos dos servicios: uno para la base de datos PostgreSQL y otro para la aplicación web.
services: db: image: postgres:13 environment: POSTGRES_DB: mydatabase POSTGRES_USER: myuser POSTGRES_PASSWORD: mypassword volumes: - postgres_data:/var/lib/postgresql/data ports: - "5440:5432" web: build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - ./app:/app ports: - "8000:8000" depends_on: - db environment: - DATABASE_NAME=mydatabase - DATABASE_USER=myuser - DATABASE_PASSWORD=mypassword - DATABASE_HOST=db - DATABASE_PORT=5440 volumes: postgres_data:
requirements.txt
Incluye las dependencias necesarias para el proyecto:
Django psycopg2-binary
Paso 3: Crear el Proyecto Django
Inicia un nuevo proyecto de Django usando Docker Compose:
docker compose run web django-admin startproject myproject .
Si aparece algún error, revisa el log de Docker Compose para corregir posibles problemas, como nombres de archivos o dependencias faltantes.
Paso 4: Configurar la Base de Datos en Django
Actualiza el archivo settings.py
de Django para usar PostgreSQL como base de datos. Ubica el archivo en app/myproject/settings.py
y configura la sección de DATABASES
:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': os.getenv('DATABASE_NAME'), 'USER': os.getenv('DATABASE_USER'), 'PASSWORD': os.getenv('DATABASE_PASSWORD'), 'HOST': os.getenv('DATABASE_HOST'), 'PORT': os.getenv('DATABASE_PORT'), } }
Paso 5: Levantar el Proyecto y Ejecutar Migraciones
Construye y levanta el proyecto con Docker Compose:
docker compose up --build2. En otra terminal, aplica las migraciones de Django:
docker compose run web python manage.py migrate
Paso 6: Acceder al Proyecto
Tu aplicación de Django debería estar corriendo en http://127.0.0.1:8000/
.
Estructura Final del Proyecto
Después de seguir estos pasos, la estructura de archivos y carpetas debería verse así:
├── app │ ├── db.sqlite3 │ ├── manage.py │ └── myproject │ ├── asgi.py │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-312.pyc │ │ ├── settings.cpython-312.pyc │ │ ├── urls.cpython-312.pyc │ │ └── wsgi.cpython-312.pyc │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── docker-compose.yml ├── Dockerfile └── requirements.txt 4 directories, 14 files
Conclusión
¡Y listo! Ahora tienes un proyecto Django funcionando con Docker, que facilita la configuración del entorno y mejora la portabilidad.
No hay comentarios.:
Publicar un comentario