Docker Fundamentals
Victor Aguilar
http://victoraguilar.net
victor@xiberty.com
Victor Aguilar C
victor@xiberty.com
Soy desarrollador fullstack y fundador de xiberty en donde construimos aplicaciones web, móviles (android e ios) y chatbots.
El Proyecto
Es una solución (tecnológica) a los requerimientos que nacen de un problema
Desarrollador
Operaciones
Developer + Operations = DevOps
Proyectos hay de todo
El Problema 1
Encontrar una manera ágil, portable e interoperable forma de manejar entornos de desarrollo
PROYECTO
THE GOOD PARTS
Modelos
Vistas
Plantillas
CLI
Configuración
Integración
¿Como es el desarrollo tradicional?
era
Proyecto
OTHER SERVICE
Requerimiento 1
POSTGRES
REDIS
Requerimiento 2
Requerimiento 3
Requerimiento 4
Servidor todo en uno
OTHER SERVICE
DJANGO
POSTGRES
REDIS
El Problema 2
Toma mucho tiempo configurar un proyecto.
Servidor(virtualizado) todo en uno
OTHER SERVICE
DJANGO
POSTGRES
REDIS
Dev1
Dev2
Dev0
Common
Es una herramienta para crear, configurar y reproducir entornos de desarrollo "ligeros" y portables
¿Vagrant?
El problema de usar vagrant para administrar tus entornos de desarrollo siempre ha sido...
VAGRANT SE ESTA CHINGANDO
MIS RECURSOS
El Problema 3
Es costoso en términos de recursos tener entornos totalmente aislados en desarrollo y no son flexibles en producción.
Es una plataforma abierta para construir, ejecutar y distribuir aplicaciones.
Es básicamente una herramienta para empaquetar tus proyectos en pequeñas cajas que funcionan por si solas o en conjunto
Mi Aplicación
Mi Server
Yo
DOCKER
THE GOOD PARTS
Dockerfile
Compose
Tools
PORFIS UN DEMO
Dockerizando una aplicación
BLOG PERSONAL
SEGURO QUE ALGUNA VEZ QUISISTE HACER TU
TE CUENTO QUE YO TAMBIÉN
BitBlog
Es un blog personal escrito en Django/Wagtail, con la particularidad de que está orientado a desarrolladores
Dockerizando mi blog ando
PROYECTO DJANGO
COMO SERVICIOS
NGINX
DJANGO
POSTGRES
REDIS
WEBSERVER
APP
DATABASE ENGINE
CACHE SERVER
DATA
OTHER SERVER
OTHER SERVICE
Dockerizando
- Seleccionar una imagen
- Instalar lo que se necesite para el propósito de la imagen
- Provisionar el comando por defecto si se requiere
- Exponer los puertos necesarios
- Vincular con los contenedores necesarios
DJANGO
FROM python:3.5
ENV PYTHONUNBUFFERED 1
COPY ./requirements /requirements
RUN pip install -r /requirements/local.txt
COPY ./compose/django/entrypoint.sh /entrypoint.sh
RUN sed -i 's/\r//' /entrypoint.sh
RUN chmod +x /entrypoint.sh
COPY ./compose/django/start-dev.sh /start-dev.sh
RUN sed -i 's/\r//' /start-dev.sh
RUN chmod +x /start-dev.sh
WORKDIR /app
ENTRYPOINT ["/entrypoint.sh"]
Dockerfile
POSTGRES
FROM postgres:9.6
ADD backup.sh /usr/local/bin/backup
ADD restore.sh /usr/local/bin/restore
ADD list-backups.sh /usr/local/bin/list-backups
RUN chmod +x /usr/local/bin/restore
RUN chmod +x /usr/local/bin/list-backups
RUN chmod +x /usr/local/bin/backup
Dockerfile
MAILHOG
FROM mailhog:latest
Dockerfile
Se aceptan contribuciones
Enlaces de interes
Esta presentación: slides.com/vicobits/docker-lite
¿Preguntas?
Docker Fundamentals
By Victor Aguilar
Docker Fundamentals
Dockerizando un app Django para entornos de desarrollo
- 279