Skip to content
This repository was archived by the owner on Dec 26, 2024. It is now read-only.

1 why es

pusher edited this page Aug 5, 2018 · 3 revisions

Why?

[ english ] [ spanish ]

Typical scenario

Problem

Vamos a los bifes con un ejemplo rápido así se entiende mejor el concepto:

Simulemos que ejecutamos estos comandos constantemente:

docker run --rm -it --name myProject-dev myProject-dev sh
...
docker run --rm -it --name myProject-prod myProject-prod sh

Se pone más divertido con los mapeos:

docker run --rm -it -p 4200:4200 -p 49153:49153 -v /choclo:... --name myProject-dev myProject-dev sh
... 
docker run --rm -it -p 4200:4200 -p 49153:49153 -v /choclo:... --name myProject-prod myProject-prod sh  

Para esto llegó scripts de npm en el package.json! Nos debería quedar algo asi:

"runDev": "docker run --rm -it -p 4200:4200 -v /choclo:... --name myProject-dev myProject sh",
"runProd": "docker run --rm -it -p 4200:4200 -v /choclo:... --name myProject-dev myProject sh",

Para luego ejecutar: npm run runDev y npm run runProd.

Pero como vemos, hay "código" repetido, y si multiplicamos por variables, podrían ser muchas líneas con pequeñas diferencias y si cambiamos algo en alguna de ellas potencialmente tenes que replicarlo en el resto, y como buenos programadores que somos evitamos el duplicado (no?).

Solution

Necesitamos algo más flexible y dinámico que permita escalar mejor. El approach elegido para solucionar esto en esta tool es el de "template".

Ejemplo rápido:

"project"="myProject"
"devName"="${project}-dev"
"prodName"="${project}-prod"
"dockerRun"="docker run --rm -it -p 4200:4200 -p 49153:49153 -v /choclo:... --name"
"runDev" =${dockerRun} ${devName} ${devName} sh
"runProd"=${dockerRun} ${prodName} ${prodName} sh

Y luego se ejectuaria con: x runDev y x runProd.

Ahora, imaginemos que todo el equipo de trabajo tiene la misma configuración, comandos rápidos y normalizados, hablaríamos el mismo idioma y podríamos sentirnos como en "casa" frente a otra máquina!

[ prev ][ next ]

Clone this wiki locally