Hemos creado con DOCKER una plantilla con la imagen de Python y Postgresql para empezar a crear proyectos de Django.
Inicialmente descargamos los archivos comprimidos en nuestro computador local, en la carpeta en donde sea ha descomprimido se crea otra carpeta donde quedará alojado todo nuestro proyecto de Django, de no hacerlo los archivos que se vayan a crear con el Framenwork de Django estarían mezclandsose con los archivos descomprimidos de Docker.
Una vez configurados los archivos Dockerfile, docker-compose.yml, y requirements.txt, damos los respectivos comandos de Docker para crear las imágenes y servicios a partir de la configuración implementada:
Para definir las dependecias desde Dockerfile:
docker build .
Para indicar cómo correr las imágenes y servicios desde docker-compose.yml:
docker-compose build
Cabe anotar que se ha integrado para ejecutar tareas desde la barra de estados de Visual Studio Code, mediante el archivo tasks.json, esto nos permitirá con un solo click ejecutar las tareas sin necesidad de trasncribir los comandos en la terminal:
Una vez construido nuestro contenedor con sus respectivas imágenes y servicios, procedemos a hacer uso de Django para crear nuestro proyecto:
docker-compose run --rm app sh -c "django-admin startproject project ."
Cómo podemos observar encerramos entre comillas los comandos de Python que darán ordenes dentro de nuestro contenedor de Docker, en este caso hemos ejecutado la orden de la creación de un proyecto de Django. De igual manera y para fines práticos en Visual Studio Code hemos automatizado dicha orden mediante un boton en la barra de estados del editor. Es importante tener en cuenta que para acceder mediante la barra de estados a las tareas automatizadas hay que instalar la extensión TASKS de Visual Studio Code:
El proyecto necesita configuración antes de levantar los servicios de Docker.
Configurar settings.py
en cuanto a importar os
y en cuanto a la configuración de la base de datos:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'HOST': os.environ.get('DB_HOST'), 'NAME': os.environ.get('DB_NAME'), 'USER': os.environ.get('DB_USER'), 'PASSWORD': os.environ.get('DB_PASS'), } }
Las variables de entorno que se implementan en la configuración de la base de datos están declaradas en el archivo docker-compose.yml
Hay una configuración adicional, para quienes ver desde su entorno local en la web con la url http://0.0.0.0:8000/
:
Al crear el proyecto mediante startproject
y después de configurar settings.py
veremos que dicho proyecto se aloja en la carpeta que de forma anticipada hemos creado al principio después de descomprimir los archivos de esta plantilla:
Procedemos a levantar el servicio de docker, si queremos ver que nuestro proyecto recién creado en el contenedor funciona, de esta manera podemos ver el servidor de DJango uncionando en la web:
docker-compose up -d
En la barra de url
de nuestro navegador podemos ingresar con http://0.0.0.0:8000/
ó http://localhost:8000/
Nota: podemos verificar desde la terminal los contenedores levantados por Docker, con el siguiente comando:
docker-compose ps
Ahora necesitamos migrar las tablas que por defecto tiene Django para iniciar nuestra base de datos. Y a partir de eso crear un superusuario:
1.) Podemos ingresar con el servicio de Docker levantado con el atajo que se encuentra en la barra de estados:
2.) Dicho atajo ejecutará la tarea que abre la shell
de Python:
3.) En shell de Python digitamos:
python manage.py migrate
Esto generará que se migren las tablas que por defecto tiene Django:
Nota: si se necesita borrar la base de datos que se creó en el volumen de Docker, puede hacero mediante el siguiente comando, lo cual le permite migrar Nuevamente las tablas de Django:
docker volume rm project-django-main_dev-db-data
Nota : si quieres acceder a postgresql desde la terminal, digita el siguiente comando:
psql -h localhost -U devuser -d devdb -W
y accedes con la contraseña parametrizada en el archivo docker-compose.yml
Flake8 es una herramienta de linting y verificación de código para Python. Su objetivo principal es ayudar a los desarrolladores a mantener un código Python limpio y legible mediante la identificación de errores de estilo y problemas potenciales en el código fuente.
El comando para ejecutar flake8 y verificar nuestro código:
docker-compose run --rm app sh -c "flake8"
La configuración de Flake8 en nuestra plantilla se puede conocer con más detalle en el commit d56e45049189c7d7231d49f48088f8aa8ae0a468 - [ADD] implementing flake8 to verify clean code