En mi caso depende de la situación, y puede ir mezclado.
Llevo un servidor que hospeda varios proyectos, cada proyecto es un set distinto de imágenes Docker, así que cada uno tiene su docker-compose.yml
correspondiente. Estos proyectos no se hablan entre sí para nada, pero todos comparten dominio y están alojados bajo prefijos de ruta distintos (https://example.com/proyecto-1/
, https://example.com/proyecto-2/
…). El dominio y los prefijos los gestiona una instancia de Caddy.
En este escenario no me gusta mezclar varios proyectos de Docker Compose en redes compartidas porque es muy fácil cometer errores (como este), así que en vez de tener Caddy en otro proyecto de Docker Compose con una red común entre Caddy y los proyectos, asigno a cada proyecto un puerto local en la máquina, lo bindeo con 127.0.0.1:<puerto-maquina>:<puerto-container>
e instalo Caddy directamente sin contenedores. Apunto cada prefijo de ruta a su puerto correspondiente y listo.
En otros escenarios como una Raspberry en casa con unas carpetas compartidas en red no me preocupo de contenedores Docker. Lo que necesito está ya a un apt install
de distancia, y la Raspi no va sobrada de potencia, así que mientras menos software en total haya corriendo, mejor.
Otras veces el software que quieres correr sólo se distribuye por imagenes Docker, y otras es un único binario que es cuestión de descargarlo, verificar el checksum y ejecutarlo.
También tengo todos estos ficheros de docker compose o scripts en repositorios Git. En mi caso lo ato todo usando Task, que es como un Makefile pero que se escribe en Yaml.