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