Miguel Angel Gordian
Software Engineer.
Miguel Angel Gordián
@ilcapitanozoek
¿Qué es Docker?
¿Por qué usar Docker?
Herramientas disponibles
¿Dónde lo puedo usar?
Docker en el Desarrollo
Es una plataforma para el desarrollo, administración y ejecución de contenedores.
Portabilidad
Aislamiento
Control de versiones
Velocidad en deployment de aplicaciones
Simplifica el mantenimiento
Ligero
Docker Engine
Docker Compose
Docker Machine
Swarm
Definen el stack de tecnologías a emplear.
Granulariza y aisla cada componente
Define el flujo del sistema (toma en cuenta tus políticas)
Desarrolla y haz testing en el contenedor
Cada componente tiene su Dockerfile *
Integra con compose
version: '2'
services:
tu_evaluas:
build: .
ports:
- "80:80"
- "443:443"
links:
- mariadb:mariadb_server
volumes:
- ./docker/env:/var/www/laravel/.env
environment:
- APP_LOG=errorlog
depends_on:
- mariadb
networks:
- database
mariadb:
image: mariadb
volumes:
- records:/var/lib/mysql
networks:
database:
aliases:
- mariadb
- db
networks:
database:
volumes:
records: {}
https://github.com/GobiernoFacil/tu-evaluas
FROM eboraas/laravel
MAINTAINER Miguel Angel Gordian <miguel.angel@kaltia.org>
RUN apt-get update && \
apt-get -y install php5-mysql wget
COPY . /var/www/laravel/
COPY docker/00* /etc/apache2/sites-enabled/
WORKDIR /var/www/laravel
RUN composer install && \
chown -R www-data:www-data bootstrap storage && \
ln -sf /dev/stdout /var/log/apache2/access.log && \
ln -sf /dev/stderr /var/log/apache2/error.log
https://github.com/GobiernoFacil/tu-evaluas
Explora y define los componentes en compose
Usa un contenedor vacío y ve explorando el sistema existente.
Después de lograr el comportamiento esperado escribe en el Dockerfile
Puedes usar un sistema con un manejador de procesos en caso de monolitos pero sera doble trabajo.
Monta tu directorio de trabajo en el directorio de la aplicación en el contenedor.
Provee al desarrollador de una forma de emular el stack de producción y pruebas.
Usa variables de entorno para cambiar el comportamiento
Usa compose como herramienta primaria, ayudará a recrear ambientes y facilita el desarrollo.
No uses manejador de procesos
Dockerfile por ambiente
Si te tardas más de 30 segundos en levantar un nuevo contenedor algo estas haciendo mal
Considera el soporte y la estructura de las imagenes a usar desde el hub de Docker
Las dependencias solo se instalan cuando se (re)?crea la imagen.
No agregues ni modifiques código en el contenedor, todo va en el Dockerfile.
En el ambiente de desarrollo prefiere reiniciar el contenedor a recrear.
Utiliza un contenedor nuevo basado en la imagen que creaste para explorar y probar.
En producción siempre recrea los contenedores.
Usa volumenes para persistir y compartir datos
Usa distintas redes para aislar tus componentes.
By Miguel Angel Gordian
Explora rapidamente las herramientas y algunos modelos para integrar docker a tus desarrollos.