Template para generar wrappers que ejecuten fácilmente una imagen docker. La finalidad es proporcionar una capa de abstracción extra para solamente enfocarse en la configuración base para arrancar una imagen docker por única vez.
Además se agregan funcionalidades para agrupar procesos de una misma imagen docker en sus diferentes versiones. Estas funcionalidades son:
- Iniciar un nuevo proceso.
- Detener un procesos existente.
- Eliminar un proceso existente.
- Conocer el estado de un proceso.
- Listar todos los procesos de una imagen en particular.
- etc.
- Clonar el repositorio en ~/.docker-wrappers
$ git clone [email protected]:lucasdc6/Docker-wrapper-template.git ~/.docker-wrappers
- Agregar el directorio ~/.docker-wrappers/bin para contar con todos los ejecutables. Además agregar el directorio raíz donde se clonó el repositorio.
$ echo 'export DOCKERDBMANAGERPATH=~/.docker-wrappers' >> ~/.bash_profile
$ echo 'export PATH="$DOCKERDBMANAGERPATH/bin:$PATH"' >> ~/.bash_profile
En ubuntu Ubuntu modificar ~/.bashrc
En Zsh modificar ~/.zshrc
- Reiniciar la terminar para efectuar los cambios.
Para usar el template, únicamente hace falta redefinir (al menos) la función "new_container", la cual es la función encargada de definir cómo va a ejecutarse la imagen docker. Por ejemplo, la función más básica podría ser algo como:
function new_container {
docker run --rm -it $IMAGE_NAME
}
Además existen otras 3 funciones las cuales se pueden definir para extender la documentación:
- extra_option: Para extender nuevas opciones agregadas.
- extra_default_value: Para extender nuevos valores por defecto agregados.
- extra_help: Para agregar cualquier otro extracto de ayuda.
Los tres casos se pueden ver utilizados en el script "phpmyadmin".
Ademas se recomienda definir valores por defecto para al menos las 4 siguientes variables de ambiente:
- DOCKERNAME
- NAME
- PORT
- VERSION
Los valores de cada variables se describen en la sección "Variables de ambiente"
Por ultimo es necesario realizar el llamado al template de la siguiente mantera:
source $DOCKERDBMANAGERPATH/.docker_wrapper_template
Es muy importante realizar el llamado al template al final del script para evitar posibles colisiones con valores de varialbes seteadas en el template.
Se cuenta con las siguientes variables de ambiente definidas en el archivo .docker_wapper_template:
PROG
: Nombre del script.NAME
: Nombre de la imagen docker utilizada (sin tag).STANDAR_PORT
: Puesto en que escucha el programa normalmente (ej: mysql usa el puerto 3306)PORT
: Puerto de la máquina host por el cual se comunica la imagen docker.VERSION
: Tag de la imagen docker utilizado.DOCKERNAME
: Nombre completo del repositorio utilizado para la imagne docker.OPTION
: Opción seleccionada dentro del script (new por ejemplo).
El script docker_wapper_template asume varias configuraciones por defecto, para
facilitar la escritura de la funcion new_container
:
IMAGE_NAME
: Se obtiene al juntar las variablesDOCKERNAME
yVERSION
, separadas por un ":"NAME_DEFAULT
: El nombre del container, por default, se obtiene de juntar las variablesNAME
yVERSION
, separadas por un "-"PORTS_DEFAULT
: Información enviada a la opción "-p" al "docker run", por defecto se obtiene al juntar las variablesPORT
ySTANDAR_PORT
, separadas por un ":"RESTART_POLICY_DEFAULT
: Seteado por default enunless-stopped
. Ver docker restart policies para mas información
Todas las variables anteriormente definidas, forman la variable DEFAULT_OPTIONS
, la cual define una base que se recomienda utilizar.