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
- 480