GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Guía de Docker:Dockerización de la aplicación Python Django

Docker es un proyecto de código abierto que proporciona una plataforma abierta para desarrolladores y administradores de sistemas para crear, empaquetar y ejecutar aplicaciones en cualquier lugar como un contenedor ligero. Docker automatiza la implementación de aplicaciones dentro de contenedores de software.

Django es un marco de aplicación web escrito en python que sigue la arquitectura MVC (Model-View-Controller). Está disponible de forma gratuita y se publica bajo una licencia de código abierto. Es rápido y está diseñado para ayudar a los desarrolladores a poner su aplicación en línea lo más rápido posible.

En este tutorial, le mostraré paso a paso cómo crear una imagen acoplable para un proyecto de aplicación Django existente en Ubuntu 16.04. Aprenderemos a dockerizar una aplicación Python Django y luego implementaremos la aplicación como un contenedor en el entorno docker mediante un script docker-compose.

Para implementar nuestra aplicación python Django, necesitamos imágenes acoplables adicionales. Necesitamos una imagen acoplable de nginx para el servidor web y una imagen de PostgreSQL para la base de datos.

¿Qué haremos?

  1. Instalar Docker-ce
  2. Instalar Docker-compose
  3. Configurar el entorno del proyecto
  4. Crear y ejecutar
  5. Pruebas

Paso 1:instalar Docker-ce

En este tutorial, instalaremos la edición comunitaria de docker-ce desde el repositorio de docker. Instalaremos la edición comunitaria docker-ce y docker-compose que admiten la versión 3 del archivo de composición.

Antes de instalar docker-ce, instale las dependencias de docker necesarias con el comando apt.

sudo apt install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

Ahora agregue la clave de la ventana acoplable y el repositorio ejecutando los comandos a continuación.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release - cs) \
   estable"

Actualice el repositorio e instale docker-ce.

sudo apt update
sudo apt install -y docker-ce

Una vez completada la instalación, inicie el servicio Docker y habilítelo para que se inicie cada vez que se inicie el sistema.

systemctl iniciar ventana acoplable
systemctl habilitar ventana acoplable

A continuación, agregaremos un nuevo usuario llamado 'omar' y lo agregaremos al grupo docker.

useradd -m -s /bin/bash omar
usermod -a -G docker omar

Inicie sesión como usuario omar y ejecute el comando docker como se muestra a continuación.

su - omar
docker ejecutar hola-mundo

Asegúrese de recibir el mensaje de saludo mundial de Docker.

La instalación de Docker-ce se ha completado.

Paso 2:instalar Docker-compose

En este tutorial, utilizaremos la última compatibilidad con docker-compose para la versión 3 del archivo de redacción. Instalaremos docker-compose manualmente.

Descargue la última versión de docker-compose usando el comando curl en el directorio '/usr/local/bin' y hágalo ejecutable usando chmod.

Ejecute los comandos a continuación.

sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local /bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Ahora comprueba la versión de docker-compose.

versión docker-compose

Y asegúrese de obtener la última versión de docker-compose 1.21.

Se ha instalado la última versión de docker-compose que admite la versión 3 del archivo de composición.

Paso 3:configurar el entorno del proyecto

En este paso, configuraremos el entorno del proyecto python Django. Crearemos un nuevo directorio 'guide01' y lo convertiremos en el directorio principal para nuestros archivos de proyecto, como Dockerfile, proyecto Django, archivo de configuración nginx, etc.

Inicie sesión con el usuario 'omar'.

su - omar

Cree un nuevo directorio 'guide01' y vaya al directorio.

mkdir -p guía01
cd guía01/

Ahora dentro del directorio 'guide01', cree nuevos directorios 'project' y 'config'.

mkdir proyecto/configuración/

Nota:

  • Directorio 'proyecto':Todos nuestros archivos de proyecto de python Django se colocarán en ese directorio.
  • Directorio 'config':directorio para los archivos de configuración del proyecto, incluido el archivo de configuración de nginx, el archivo de requisitos de pip de python, etc.

Crear un nuevo archivo requirements.txt

Luego, cree un nuevo archivo 'requirements.txt' dentro del directorio 'config' usando el comando vim.

vim config/requirements.txt

Pegue la configuración a continuación.

Django==2.0.4  
gunicorn==19.7.0 
psycopg2==2.7.4

Guardar y salir.

Crea el archivo de host virtual Nginx django.conf

En el directorio de configuración, cree el directorio de configuración 'nginx' y agregue el archivo de configuración de host virtual django.conf.

mkdir -p config/nginx/
vim config/nginx/django.conf

Pegue la siguiente configuración allí.

web ascendente {
  ip_hash;
  servidor web:8000;
}

# portal
servidor {
  ubicación / {
        proxy_pass http://web/;
    }
  listen 8000;
  server_name localhost;

  ubicación /static {   
    autoindex activado;
    alias /src/static/;
  }
}

Guardar y salir.

Crea el Dockerfile

Cree un nuevo 'Dockerfile' dentro del directorio 'guide01'.

Ejecute el siguiente comando.

vim Dockerfile

Ahora pegue el script de Dockerfile a continuación.

&&\
    apk agregar postgresql-dev bash

EJECUTAR mkdir /config 
AGREGAR /config/requirements.txt /config/ 
EJECUTAR pip install -r /config/requirements. txt
EJECUTAR mkdir /src
WORKDIR /src

Guardar y salir.

Nota:

Queremos construir las imágenes de Docker para nuestro proyecto Django basado en Alpine Linux, el tamaño más pequeño de Linux. Nuestro proyecto Django ejecutará Alpine Linux con python 3.5 instalado encima y agregará el paquete postgresql-dev para la compatibilidad con la base de datos PostgreSQL. Y luego instalaremos todos los paquetes de python enumerados en el archivo 'requirements.txt' usando el comando python pip, y crearemos un nuevo '/src' para nuestro proyecto.

Crear secuencia de comandos de Docker-compose

Cree el archivo 'docker-compose.yml' en el directorio 'guide01' usando el comando vim a continuación.

vim docker-compose.yml

Pegue la siguiente configuración allí.

versión:'3'
servicios:
  db:
    imagen:postgres:10.3-alpine
    container_name:postgres01
  nginx:
    imagen:nginx:1.13-alpine
    nombre_contenedor:nginx01
    puertos:
      - "8000:8000"
    volúmenes:
      - ./project:/src
      - ./config/nginx:/etc/nginx/conf.d
    depende_de:
      - web
  web:
    compilación:.
    nombre_contenedor:django01
comando:bash -c "python manage.py makemigrations &&python manage.py migrar &&python manage.py collectstatic --noinput &&gunicorn hello_django.wsgi -b 0.0.0.0:8000"
    depende_de:
      - db
    volúmenes:
      - ./proyecto:/src
    exposición:
      - "8000"
    reiniciar:siempre

Guardar y salir.

Nota:

Con este script de archivo docker-compose, crearemos tres servicios. Cree el servicio de base de datos llamado 'db' usando PostgreSQL alpine Linux, cree el servicio 'nginx' usando Nginx alpine Linux nuevamente y cree nuestro contenedor python Django usando las imágenes de docker personalizadas generadas desde nuestro Dockerfile.

Configurar proyecto Django

Copie los archivos de su proyecto Django en el directorio 'proyecto'.

cd ~/django
cp -r * ~/guide01/proyecto/

Vaya al directorio 'proyecto' y edite la configuración de la aplicación 'settings.py'.

cd ~/guide01/project/
vim hello_django/settings.py

Nota:

Implementaremos una aplicación Django simple llamada aplicación 'hello_django'.

En la línea 'ALLOW_HOSTS', agregue el nombre del servicio 'web'.

ALLOW_HOSTS =['web']

Ahora cambie la configuración de la base de datos. Usaremos la base de datos PostgreSQL que se ejecuta como un servicio llamado 'db' con el usuario y la contraseña predeterminados.

BASES DE DATOS ={  
    'predeterminado':{
        'MOTOR':'django.db.backends.postgresql_psycopg2',
        'NOMBRE':'postgres',
        ' USUARIO':'postgres',
        'HOST':'db',
        'PUERTO':5432,
    }
}

Y para el directorio de configuración 'STATIC_ROOT', agregue esta línea al final de la línea del archivo.

STATIC_ROOT =os.path.join(BASE_DIR, 'static/')

Guardar y salir.

Ahora estamos listos para compilar y ejecutar el proyecto Django en el contenedor acoplable.

Paso 4:compilar y ejecutar la imagen de Docker

En este paso, queremos construir una imagen Docker para nuestro proyecto Django usando la configuración en el directorio 'guide01'.

Vaya al directorio 'guide01'.

cd ~/guide01/

Ahora crea las imágenes de la ventana acoplable con el comando docker-compose.

compilación docker-compose

Inicie todos los servicios dentro del script docker-compose.

docker-compose up -d

Espere unos minutos para que Docker cree nuestra imagen de Python y descargue las imágenes de docker de nginx y postgresql.

Y cuando esté completo, verifique el contenedor en ejecución y enumere las imágenes de la ventana acoplable en el sistema usando los siguientes comandos.

docker-compose ps
imágenes docker-compose

Y ahora obtendrá tres contenedores ejecutándose y una lista de imágenes de Docker en el sistema como se muestra a continuación.

Nuestra aplicación Python Django ahora se ejecuta dentro del contenedor acoplable y se han creado imágenes acoplables para nuestro servicio.

Paso 5 - Prueba

Abra su navegador web y escriba la dirección del servidor con el puerto 8000, el mío es: http://ovh01:8000/

Ahora obtendrá la página de inicio predeterminada de Django.

A continuación, pruebe la página de administración agregando la ruta '/admin' en la URL.

http://ovh01:8000/admin/

Y verá la página de inicio de sesión del administrador de Django.

La aplicación Dockerizing Python Django se completó con éxito.


Docker
  1. Ejecución de PostgreSQL en Docker, una guía rápida y práctica

  2. Cómo ejecutar Nginx en un contenedor Docker:una guía paso a paso

  3. Cuándo y por qué usar Docker

  4. Guía completa para principiantes sobre el registro de Docker

  5. Una guía rápida para usar Docker Compose

Cómo implementar una aplicación API de Python Flask en Docker

Guía completa para eliminar imágenes de Docker

Guía para principiantes sobre la política de reinicio de Docker

Cómo instalar Django en Ubuntu 22.04

Instalar Docker en Ubuntu:una guía paso a paso

Guía para principiantes del mundo Docker