Otra pregunta más sobre el enlace simbólico de Docker. Tengo un montón de archivos que quiero copiar en todas mis compilaciones de Docker. Mi estructura de directorio es:
parent_dir
- common_files
- file.txt
- dir1
- Dockerfile
- symlink -> ../common_files
En el ejemplo anterior, quiero que el archivo.txt se copie cuando construya la ventana acoplable dentro de dir1. Pero no quiero mantener varias copias de file.txt. Según este enlace, a partir de la versión 0.10 de Docker, la compilación de Docker debe
Siga los enlaces simbólicos dentro de la raíz del contenedor para obtener instrucciones de compilación de ADD.
Pero no obtengo ese archivo o directorio cuando construyo con cualquiera de estas líneas en mi Dockerfile:
ADD symlink /path/dirname
o
ADD symlink/file.txt /path/file.txt
La opción de montaje NO lo resolverá por mí (plataforma cruzada ...). Lo intenté tar -czh . | docker build -t
sin éxito.
¿Hay alguna manera de hacer que Docker siga el enlace simbólico y copie common_files / file.txt en el contenedor construido?
Follow symlinks inside container's root for ADD build instructions.
significa que dentro del contenedor se siguen los enlaces simbólicos. No en el directorio de contexto de compilación. EnADD file.txt /dir/file.txt
el directoriodir
podría haber un enlace simbólico. Los argumentos que cité en mi respuesta aún son válidos y los enlaces simbólicos aún no se siguen en la última versión. Puede tener problemas (con respecto a la repetibilidad) cuando almacena enlaces simbólicos en sistemas de control de revisión como git . Por lo tanto, consulte esta pregunta .Una posibilidad es ejecutar la compilación en el directorio principal, con:
(O de manera equivalente, en el directorio secundario)
El Dockerfile deberá configurarse para copiar / agregar con las rutas adecuadas. Dependiendo de su configuración, es posible que desee que un elemento
.dockerignore
principal omita cosas que no desea que se pongan en contexto.fuente
Si alguien todavía tiene este problema, encontré una solución muy buena en superuser.com:
/superuser/842642/how-to-make-a-symlinked-folder-appear-as-a-normal-folder
Básicamente, sugiere usar tar para eliminar la referencia de los enlaces simbólicos y alimentar el resultado en la compilación de Docker:
fuente
en lugar de usar simlinks, es posible resolver el problema administrativamente simplemente moviendo archivos de sites_available a sites_enabled en lugar de copiar o hacer simlinks
por lo que la configuración de su sitio estará en una copia solo en la carpeta site_available si se detuvo o algo o en sites_enabled si se debe usar
fuente
Sé que rompe la portabilidad de la compilación de la ventana acoplable, pero puede usar enlaces duros en lugar de simbólicos:
fuente