Tengo problemas con el archivo .dockerignore . Esta es la estructura de mi proyecto:
file.sh file.js file.go file.py subdir/ file2.go file2.py .dockerignore Dockerfile De acuerdo con la documentación de .dockerignore :
(...) es posible que desee especificar qué archivos incluir en el contexto, en lugar de cuáles excluir. Para lograr esto, especifique * como primer patrón, seguido de uno o más ! patrones de excepción.
Y:
Líneas que comienzan con ! (signo de exclamación) se puede utilizar para hacer excepciones a las exclusiones.
Por fin:
Docker también admite una cadena comodín especial ** que coincide con cualquier cantidad de directorios (incluido cero). Por ejemplo, **/*.go excluirá todos los archivos que terminen en .go que se encuentren en todos los directorios, incluida la raíz del contexto de compilación.
Basado en eso, este es mi archivo .dockerignore :
# ignore everything * # whitelist # --------- # python files !**/*.pyCuando construyo y ejecuto el contenedor e inspecciono los archivos, obtengo esto:
file.py Falta el directorio subdir , se debe incluir subdir/file2.py . Funciona si agrego !subdir/**/.py a mi .dockerignore , pero la idea es incluir cualquier archivo .py en cualquier subdirectorio.
Esta es la estructura de archivos que debería estar presente en el contenedor:
file.py subdir/ file2.py¿Que está pasando aqui?
Encontré algunos problemas que mencionan este problema exacto, como estos:
Los patrones de excepción en .dockerignore no admiten directorios comodín dockerignore no respeta el "comodín especial **" (comentario)
Y parece que no se arreglará pronto :(