Saltar al contenido

Cómo generar una multilínea string en Dockerfile con un solo comando

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *