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 

1
 

Proyecto

Python + Django 

Dockerizando

  1. Seleccionar una imagen
  2. Instalar lo que se necesite para el propósito de la imagen
  3. Provisionar el comando por defecto si se requiere
  4. Exponer los puertos necesarios
  5. 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

1
 

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

  1. Chat
  2. Gestor de Archivos
  3. Gestor de Contraseñas
  4. 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