Lucas, miembro de nuestro equipo, nos ha hecho el favor de redactar este escrito porque domina muy bien el tema.
Solución:
Hay otra pregunta similar a esta con una solución: ¿Cómo escribir comandos con varias líneas en Dockerfile mientras se conservan las nuevas líneas?
La respuesta a esta pregunta es más particular sobre cómo usar cadenas multilínea en bash en lugar de cómo usar Docker.
Siguiendo esta solución, puede lograr lo que desea hacer como se muestra a continuación:
RUN echo $' n
*****first row ***** n
*****second row ***** n
*****third row ***** ' >> /home/myfile
Más información sobre este signo de dólar inicial aquí: ¿Cómo afecta el signo de dólar inicial a las comillas simples en Bash?
Tenga en cuenta que esta sintaxis se basa en el comando de ejecución usando /bin/bash, no /bin/sh.
Si tiene un archivo de tamaño moderado, generalmente es más fácil almacenarlo en un archivo separado y simplemente COPY
en.
FROM alpine:latest
COPY myfile.txt /
CMD cat /myfile.txt
Esto se extiende a ENTRYPOINT
y CMD
comandos también. En lugar de escribir un comando de shell complejo (especialmente como un ENTRYPOINT
), normalmente es más fácil escribir un script de shell independiente. Si fuera importante que su aplicación imprimiera el contenido de ese archivo antes de ejecutar lo principal que hace el contenedor, podría escribir un script de punto de entrada como
#!/bin/sh
cat /myfile.txt
exec "[email protected]"
y luego el Dockerfile
FROM alpine:latest
COPY myfile.txt entrypoint.sh /
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
CMD ["???"]
Esto también le brinda un lugar para modificar el archivo en tiempo de ejecución (digamos, usando sed(1)) antes de ejecutar el programa principal si su contenido real necesita depender de variables de entorno u otros datos de tiempo de ejecución.
Te mostramos las reseñas y valoraciones de los usuarios
Si te animas, tienes la opción de dejar un post acerca de qué te ha parecido esta noticia.