¿Cómo dockerizar un proyecto hecho en Django?

Agregando variables de entorno a nuestro proyecto

Para lograr esa comunicación entre el sistema operativo host y la aplicación por medio de variables de entorno, usaremos la biblioteca OS. Y un ejemplo muy sencillo de su uso sería:

import osSETTING_01 = os.environ.get('MY_VARIABLE', 'DEFAULT_VALUE')

¿Cómo usaremos Docker en el proyecto?

En nuestro caso Docker nos permitirá la encapsulación y la fácil ejecución. Debemos entender entonces las dos etapas y sus respectivas salidas, nos vamos apoyar del siguiente gráfico:

By docker.com

Creando el Dockerfile

El archivo que necesita Docker para crear la imagen se llama Dockerfile. En el Dockerfile se especifica las instrucciones de instalación de las dependencias del proyecto, se exponen puertos y se especifica el punto de entrada de la aplicación que en nuestro caso es un servicio web que expone un API REST.

FROM python:3.8-alpine AS Builder# Install dependencies
RUN pip install pipenv
COPY Pipfile* /
RUN pipenv lock --requirements > requirements.txt
RUN apk add --update --no-cache --virtual .tmp gcc libc-dev
RUN pip install -r requirements.txt
# Copy sources files
WORKDIR /code
COPY . .
# Default port
ARG ARG_DEFAULT_PORT=8000
EXPOSE $ARG_DEFAULT_PORT
ENV DEFAULT_PORT=${ARG_DEFAULT_PORT}
# Install migrations
RUN python manage.py migrate
# Run server
ENTRYPOINT python manage.py runserver 0.0.0.0:${DEFAULT_PORT}
__pycache__
*.pyc
*.pyo
*.pyd
.Python
env
.env
pip-log.txt
pip-delete-this-directory.txt
.tox
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover
*.log
.git
db.sqlite3

Construyendo nuestra imagen

Ya con el Dockerfile y el .dockerignore podremos construir nuestras imágenes, para esto usaremos el comando docker build, en nuestro caso usaremos:

$>docker build --build-arg ARG_DEFAULT_PORT=8000 -t prhases_img .

Ejecutando nuestra imagen

Ya con nuestra imagen este es un template que podremos ejecutar las veces que queramos, estas ejecuciones se llaman contenedores ó instancias. El comando que vamos a utilizar para crear los contenedores es el docker run. En nuestro caso usaremos el comando:

$>docker run -it -p 8000:8000 \
-e DJANGO_DEBUG=True \
-e DJANGO_SECRET_KEY='SuperS3cr3t' \
-e DJANGO_ALLOWED_HOSTS='*' \
phrases_img

--

--

Innovador por naturaleza, desarrollador de software de profesión y futbolista de corazón.

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Pedro Caicedo

Pedro Caicedo

8 Followers

Innovador por naturaleza, desarrollador de software de profesión y futbolista de corazón.