Past leader de comunidades como GDG La Paz y Docker La Paz, actualmente.
Senior Backend Dev en Fondeadora
Los entornos de desarrollo
no se parecen a los de producción.
Encontrar una manera ágil, portable e interoperable forma de manejar entornos de desarrollo
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
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
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
Docker
Containers
Tu laptop / VPS
Docker
Containers
Dockerfile
Compose
Engine
CLI
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....
UN PROYECTO
DATA
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
Herramientas que todos los
equipos necesitan
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
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
by datadog