Empecé instalando un servidor «gitolite» con Docker para llegar al verdadero reto, migrar mis web’s, git privado y correo desde un servidor único a múltiples contenedores Docker. He actualizado este apunte después de terminar, dejo más abajo los fuentes en Docker/GitHub y para entenderlos qué mejor que una imagen (click para ampliar)
Si estás empezando con Docker no te pierdas ¿qué es Docker?, continúa con su documentación y aprovecha todos estos ejemplos reales:
- Agregador de Log’s (fig.yml servicio-log)
— GitHub base-fluentd – Docker luispa/base-fluentd
— GitHub base-eskibana – Docker luispa/base-eskibana - Servidor GIT privado con Gitolite (fig.yml servicio-gitolite)
— GitHub base-gitolite – Docker luispa/base-gitolite - Servicio BD para Blog WordPress (fig.yml servicio-db-blog)
— GitHub base-mysql – Docker luispa/base-mysql - Servicio BD para Correo (fig.yml servicio-db-correo)
— GitHub base-mysql – Docker luispa/base-mysql - Servicio de Correo Electrónico (fig.yml servicio-correo)
— GitHub base-postfix – Docker luispa/base-postfix
— GitHub base-chatarrero – Docker luispa/base-chatarrero
— GitHub base-courierimap – Docker luispa/base-courierimap - Serivio Web (fig.yml servicio-web)
— GitHub base-squid – Docker luispa/base-squid
— GitHub base-wordpress – Docker luispa/base-wordpress
— GitHub base-roundcube – Docker luispa/base-roundcube
— GitHub base-postfixadmin – Docker luispa/base-postfixadmin
Persistencia
Todos los contenedores se apoyan en una estructura persitente de datos en el Host:
1 2 3 4 | /Apps/ +--/data <== Datos, repositorios, webs, ... | +--/docker <== scripts, ficheros yml, ficheros para docker, etc... |
Ejemplo
Veamos un ejemplo concreto para entender la filosofía de Docker. En este caso necesitaba entregar el servicio GIT y varios servidores Web. La idea es que cada contenedor ejecute un único proceso. Encontrarás varios retos, por ejemplo ¿cómo montar varios Web’s si solo tienes una única IP pública?. La solución tradicional son los “vhosts”, ahora bien, como la filosofía de Docker es distinta entonces usamos balanceadores (en mi caso “squid” un “proxy inverso con soporte de virtual hosts”, otros posibles serían haproxy o nginx)
En la figura puedes ver a lo que me refiero, para resolverlo tendríamos un contenedor con «gitolite» y otros (tres en el gráfico) para dar los servicios «web»
Espero que este apunte junto con los proyectos en el registry de Docker y en GitHub te sirvan de ayuda para tus própias instalaciones.