Docker para hipsters, nerds y
pequeños equipos
Victor Aguilar
vicobits@gmai.com

desarrolladores
Victor Aguilar C.
vicobits@gmail.com
Past leader de comunidades como GDG La Paz y Docker La Paz, actualmente.
Senior Backend Dev en Fondeadora

Seguramente Alguna vez les pasó esto

El Problema 1
Los entornos de desarrollo
no se parecen a los de producción.

Problema 2

Encontrar una manera ágil, portable e interoperable forma de manejar entornos de desarrollo
En los Proyectos de ahora involucran muchas tecnologías y muchas personas

Y es que hay
un chi...ngo de técnologías
y todo el tiempo se crean más











El Problema 3
Toma mucho tiempo configurar un proyecto.

Es una herramienta para crear, configurar y reproducir entornos de desarrollo "ligeros" y portables


Antes usabamos soluciones como esta
¿Vagrant?
El problema de usar vagrant para administrar tus entornos de desarrollo siempre ha sido...
ULTRA TEDIOSO
"VAGRANT SE ESTA CHINGANDO MIS RECURSOS"

Docker y sus amigos
son la mejor opción




¿Pero ya conocían Docker?


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
Pensemos en un edificio

Container
Compose
Server
Para entenderlo mejor
Docker

Docker
Containers
Tu laptop / VPS
Docker
Containers
DOCKER
THE GOOD PARTS FOR DEVS
Dockerfile
Compose
Engine



CLI

El secreto de Docker
-
Construir imágenes -
Reutilizar imágenes

Dockerfile
docker-compose.yml


Es una archivo contiene las instrucciones necesarias para automatizar la creación de una imagen
Casi lo mismo pero para multiples imagenes....
Definimos imagenes con
Dockerfile y docker-compose.yml

Con un Ejemplo
Probemos


Proyecto
Python + Django
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
UN PROYECTO
PROYECTO DJANGO
CON DOCKER COMPOSE
DJANGO

DATA


POSTGRES

REDIS
Dockerfile
FROM python:3 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code COPY requirements.txt /code/ RUN pip install -r requirements.txt COPY . /code/
Django>=2.0,<3.0 psycopg2>=2.7,<3.0
requirements.txt
docker-compose.yml
version: '3'
services:
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db

Development Problems

¿Y si usamos este enfoque para las necesidades de los equipos?


- Una persona que sigue las últimas tendencias y modas
- Escucha casi exclusivamente música indie y alternativa
- Tiene preferencia por los productos Apple

- Es excesivamente intelectual y que sobresale en el colegio
- Odia los deportes
- Tiene falta de habilidades sociales

- Personas con conocimientos en general
- Están obsesionados con hobbies poco comunes.
- Siguen las tendencias tecnológicas
- Se sienten incómodos en ambientes sociales
Herramientas que todos los
equipos necesitan
- Gestión de versiones
- Gestión de Proyectos
- Integración Continua
- Monitoreo de Errores
- Logs
- Otras cosas fancy

Probemos
Una vez más
Gestión de versiones

Integración Continua
Monitoreo de Errores

version: '2'
services:
base:
restart: unless-stopped
build: .
environment:
SENTRY_SECRET_KEY: 'cql!e!v5_%#9nk=%&t8&'
SENTRY_MEMCACHED_HOST: memcached
SENTRY_REDIS_HOST: redis
SENTRY_POSTGRES_HOST: postgres
SENTRY_EMAIL_HOST: smtp
volumes:
- ./media:/var/lib/sentry/files
smtp:
restart: unless-stopped
image: tianon/exim4
memcached:
restart: unless-stopped
image: memcached:1.5
redis:
restart: unless-stopped
image: redis:5-alpine
postgres:
restart: unless-stopped
image: postgres:10
volumes:
- ./data:/var/lib/postgresql/data
web:
...
docker-compose.yml (sentry)
web:
restart: unless-stopped
extends: base
links:
- redis
- postgres
- memcached
- smtp
ports:
- '9000:9000'
cron:
restart: unless-stopped
extends: base
command: run cron
links:
- redis
- postgres
- memcached
- smtp
worker:
restart: unless-stopped
extends: base
command: run worker
links:
- redis
- postgres
- memcached
- smtp
docker-compose.yml (sentry -continuación)
Otras cosas para Equipos
- Chat
- Gestor de Archivos
- Gestor de Contraseñas
- Basicamente cualquier App Open Source
En Resúmen
Es realmente una de las herramientas
que ha cambiado la forma
en que trabajamos los proyectos.
Lo que paso con git hace unos años
Docker será así de imprescindible como lo es git ahora

Docker Compose es una herramienta que permite simplificar el uso de Docker. ... En vez de utilizar Docker via una serie inmemorizable de comandos bash y scripts, Docker Compose te permite mediante archivos YAML

Facts acerca de Docker
by datadog
Y si aún no lo han usado









¿Preguntas?
https://vico.dev
Docker para Hipsters, Nerds y pequeños equipos
By Victor Aguilar
Docker para Hipsters, Nerds y pequeños equipos
Un breve repaso a las maquinas virtuales su uso y funcionamiento
- 467