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 !**/*.py
Cuando 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 :(