Download - Docker
“Docker es una forma de ejecutar procesos de forma aislada, por medio de la generación de containers.”
Docker
Docker Compose
“Es una herramienta para definir, administrar y correr múltiples containers al mismo tiempo”
Contexto de Meli
~800 desarrolladores en 5 centros
~400 deploys por día
~20K servidores virtuales en 3 datacenters
~18 MM rpm
Un día típico de un desarrollador...
DesarrollarIntegración
continuaBuildearTestear
localmente
Deployar
Debuggear
Docker al desarrollar
Código
Simplificar el setup del entorno
Generar nuevos ambientes
Documentar dependencias externas
Docker al desarrollar
FROM mercadolibre/grails:2.4.3 myApp: build: . port: - “8080:8080” volumes: - .:/app links: - mysql environment: - GRAILS_ENV=development
mysql: image: mysql
/Dockerfile /docker-compose.yml
Configuración para Producción
FROM mercadolibre/tomcat-runtime:7
ENV CATALINA_OPTS "-Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8 $CATALINA_OPTS"
/Dockerfile /Dockerfile.runtime
FROM mercadolibre/grails:2.4.3
/docker-compose.yml
...
Generar un build
#/bin/bash
cd app/
## Genero la imagen de desarrollo y corro testsdocker build -t --file Dockerfile develop-app .docker run develop-app /test.sh
## Genero y guardo la imagen de produccióndocker build -t --file Dockerfile.runtime app .docker push app
Docker en Producción
Simplificar el setup del entorno
Replicar Código + Entorno
Simular Producción localmente
Docker en Producción
SERVIDOR FÍSICO
SERVIDOR VIRTUAL SERVIDOR VIRTUAL SERVIDOR VIRTUAL
DOCKER ENGINE
APP 1
LOGS
METRICS
DOCKER ENGINE
APP 2
LOGS
METRICS
Docker en Producción
SERVIDOR FÍSICO
SERVIDOR VIRTUAL SERVIDOR VIRTUAL
DOCKER ENGINE
APP
EC2 EC2
DOCKER ENGINE
APP
Básicamente...
Simplificar el ambiente de desarrollo
Reproducción local del ambiente productivo
Replicar Código + Entorno