Cómo crear archivos docker-compose.yml de manera fácil con EZCompose

Hace un par de semanas comencé a aprender algo nuevo, ese algo nuevo es Python, con lo aprendí, me anime y salió esto...

Así es, hace un par de semanas, comencé a estudiar Python, ¿Por qué? Porque me parece que me puede ser muy útil para desarrollar, en mi caso, pequeñas aplicaciones que me ayuden con determinada tareas.

No planeo convertirme a desarrollador, ni buscar un trabajo relacionado, solo quiero más herramientas para poder hacer cosas más interesantes y que me ayuden a automatizar cierto trabajo.

Los canales que estoy viendo para todo este proceso, se los recomiendo, son estos:

Curso de programación Python desde cero
Curso profesional de programación Python desde cero - En este curso aprenderás a programar y construir tus programas utilizando el lenguaje de programación P...
Curso Python desde 0.
Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.

EZCompose

Como parte de este proceso, estoy desarrollando pequeñas aplicaciones que me ayudan a entender mejor los conceptos. Creo que la práctica es clave a la hora de aprender algo nuevo.

Una de esas aplicaciones es EZCompose. Este programa, está pensado para que, mediante un asistente, puedas definir un montón de datos y que los mismos se vuelquen a un archivo llamado docker-compose.yml.

Si lees este blog a menudo, ya tenés idea de lo que es ese archivo, pero si no te acordas, es una receta donde definimos contenedores y sus configuraciones.

Ahora bien, este programa no está terminado pero es totalmente funcional, a medida que voy aprendiendo cosas, le voy a agregando más funcionalidades.

La última versión liberada es la v0.1.3-alpha que te permite especificar uno o varios contenedores con las siguientes características:

  • Asignar un nombre al contenedor
  • Múltiples juegos de puertos.
  • Múltiples labels
  • Una red
  • Un volumen (Bind)
  • Un comando

Como se darán cuenta queda mucho por hacer, pero lo que hay es totalmente usable.

Cómo funciona

En esta versión, del archivo ezcompose.py hice un ejecutable, el mismo es capaz de correr en cualquier versión de Linux/Mac. Por ahora, no lo he hecho para Windows. Si les gustaría que lo haga, pueden abrir un Issue.

xe-nvdk/ezcompose
EZCompose es un programa en Python que mediante un asistente te ayuda a generar un archivo docker-compose.yml - xe-nvdk/ezcompose

Vamos a descargarlo. (Comprueba que estés descargando la última versión)

$ wget https://github.com/xe-nvdk/ezcompose/releases/download/v0.1.3.1-alpha/ezcompose

Lo corremos de la siguiente manera:

$ ./ezcompose

Ahí aparecerá el cartel de bienvenida a la aplicación y comenzará a pedirte datos:

##############################################################
################ Bienvenides a EZCompose #####################
##############################################################

Este programa te ayudará a crear un archivo docker-compose.yml

Escribe el nombre del servicio: webserver
¿Quieres especificar un nombre al contenedor? [y/n]: y
Dame un nombre para tu contenedor: wordpress
Define la imágen a descargar: wordpress:latest
¿Quieres publicar uno o mas puertos? [y/n]: y
Define el puerto a publicar hacia afuera: 80
Define el puerto del contenedor: 80

Queres agregar mas puertos? [y/n]: n
¿Quieres montar volumenes? [y/n]: y
Especifica el directorio local: $PWD
Especifica el directorio a resguardar en el contenedor: /var/www/html/wp-content
Define los permisos. Pueden ser rw o ro, si no especificas nada, sera rw:
¿Quieres especificar una red? [y/n]: y
Especifica el nombre de la red: wordpress
¿Quieres especificar un comando? [y/n]: n
¿Quieres especificar una label? [y/n]: n

Queres agregar un nuevo contenedor? [y/n]: n

Tu archivo esta listo, lo encontraras en el mismo directorio desde donde ejecutaste este programa

Gracias por usar EZCompose

De todo esto, va a resultar el siguiente archivo docker-compose.yml

version: "3.3"

services:


   webserver:
    container_name: wordpress
    image: wordpress:latest
    ports:
     - 80:80
    volumes:
     - $PWD:/var/www/html/wp-content:
    networks:
     - wordpress
    labels:

networks:
  wordpress:

Si quisiera agregarle otro contenedor, en la última pregunta, en vez de poner 'n' como hice, pueden poner 'y' y el programa comenzará de nuevo.

Queres agregar un nuevo contenedor? [y/n]: y

Para ir cerrando

Estoy entusiasmado con EZCompose porque no hay nada parecido en Python y creo que puede ser un proyecto que ayude a muchos a armar de manera rápida sus archivos docker-compose.yml.

Faltan agregar muchas cosas, pero comenté al principio esto es parte de un aprendizaje, a medida que avance, iré agregando cosas.

Por lo pronto, en la próxima versión incluirá la capacidad de agregar más comandos y volúmenes del tipo bind (Por el momento no soporta Manage Volumes).

Cualquier tipo de contribución a este proyecto es bienvenido, pueden abrir un Issue o hacer un Fork, modificar y hacer un Pull Request.

xe-nvdk/ezcompose
EZCompose es un programa en Python que mediante un asistente te ayuda a generar un archivo docker-compose.yml - xe-nvdk/ezcompose

Espero que este programa les guste y sobre todo, les sea de utilidad.