Digamos que quiero usar Docker para una aplicación, que consta de dos partes. Estas partes son diferentes, pero tienen algunas bibliotecas compartidas.
Entonces, tengo dos carpetas:
part1/
Dockerfile
src/
part2/
Dockerfile
src/
Sin embargo, quiero que compartan algunos archivos (por ejemplo, bibliotecas), porque DRY. Desafortunadamente, no parece haber una buena estructura de directorios que me permita hacer eso: los archivos Docker no pueden hacer referencia a las carpetas principales, y no puedo ponerlos a ambos en la carpeta superior porque no se me permite cambiar El nombre del Dockerfile.
Algunos de estos archivos son necesarios en el paso de construcción, por lo que no puedo usar la opción "vincular montar un volumen" de docker run
- docker run
es demasiado tarde.
Veo estas opciones y no me gustan:
Puedo agregar una carpeta con el nombre
shared/
y usar un hack para ponerla "en" ambas carpetas de mi aplicación. Estos hacks incluyen montarlo de alguna manera (lo cual es molesto, requeriría que lo haga siempre, e inexplicable para mis compañeros de trabajo a quienes estoy tratando de vender Docker) o copiarlo antes de construir (factible si oculto el edificio en una construcción -script, copie la carpeta antes de la compilación y elimínela justo después; sin embargo, invalida la caché de compilación incluso si la carpeta compartida no se modifica y es propensa a errores)Puedo dividir el proyecto en 3 proyectos diferentes y vincularlos usando git-sub-something. Es muy difícil trabajar con esta configuración (o no sé cómo hacerlo).
Supongo que mi situación no es tan infrecuente, especialmente con el lema "desacoplar aplicaciones en múltiples contenedores". Así que probablemente hay maneras muy buenas de trabajar con eso. ¿Alguna pista?
fuente