Escribir datos para archivar en Dockerfile

Tengo un script de shell, script.sh, que escribe algunas líneas en un file:

#!/usr/bin/env bash printf "blah blah blah blah\n" | sudo tee file.txt 

Ahora en mi file Docker, agrego este script y lo ejecuto, luego bash agregar el file.txt generado:

 ADD script.sh . RUN chmod 755 script.sh && ./script.sh ADD file.txt . 

Cuando hago lo anterior, obtengo un error al hacer reference al ADD file.txt . mando:

lstat file.txt: no such file or directory

¿Por qué Docker no puede ubicar el file que genera mi script de shell? ¿Dónde podría encontrarlo?

Cuando RUN chmod 755 script.sh && ./script.sh en realidad ejecuta esta secuencia de commands dentro del contenedor acoplable (es decir, en la capa acoplable).

Cuando ADD file.txt . Intenta agregar un file en su sistema de files local dentro del contenedor acoplable (es decir: en una nueva capa acoplable).

No puedes hacer eso porque el file.txt no existe en tu computadora.

De hecho, ya tiene este file dentro de la docker run --rm -ti mydockerimage cat file.txt acoplable, intente con la docker run --rm -ti mydockerimage cat file.txt y debería ver que se muestra el contenido

Es porque Docker carga todo el context del directory (donde está ubicado su file Docker) al daemon Docker al principio. De Docker documentos,

La compilation es ejecutada por el daemon de Docker, no por la CLI. Lo primero que hace un process de compilation es enviar todo el context (recursivamente) al daemon. En la mayoría de los casos, es mejor comenzar con un directory vacío como context y mantener su file Docker en ese directory. Agregue solo los files necesarios para comstackr Dockerfile.

Como su file de text no estaba disponible al principio, recibe ese post de error. Si aún desea que ese file de text desee agregarse a la image de Docker, puede llamar al command `docker build 'desde el mismo file de script. Modificar script.sh,

 #!/usr/bin/env bash printf "blah blah blah blah\n" | sudo tee <docker-file-directory>/file.txt docker build --tag yourtag <docker-file-directory> 

Y modifique su file Docker solo para agregar el file de text generado.

 ADD file.txt .. <rest of the Dockerfile instructions>