docker compose - run - Docker-componer llamado volumen montado
docker tag (5)
Con el fin de realizar un seguimiento de los volúmenes utilizados por docker-compose me gusta usar volúmenes con nombre. Esto funciona muy bien para volúmenes ''normales'' como
version: 2
services:
example-app:
volume:
-named_vol:/dir/in/container/volume
volumes:
named_vol:
Pero no puedo averiguar cómo hacerlo funcionar al montar el host local. Estoy buscando algo como:
version: 2
services:
example-app:
volume:
-named_homedir:/dir/in/container/volume
volumes:
named_homedir: /c/Users/
o
version: 2
services:
example-app:
volume:
-/c/Users/:/home/dir/in/container/ --name named_homedir
¿Esto es de alguna manera posible o estoy atascado con volúmenes anónimos para montados?
Como puede leer en este número de GitHub, montar volúmenes con nombre ahora es una cosa ... desde 1.11 o 1.12.). Las opciones específicas del conductor están documentadas. Algunas notas del hilo de GitHub:
docker volume create --opt type=none --opt device=<host path> --opt o=bind
Si la ruta del host no existe, no se creará.
Las opciones se pasan literalmente a la syscall de montaje. Podemos agregar casos especiales para ciertos "tipos" porque son difíciles de usar ... como el ejemplo de nfs [mencionado anteriormente].
- @ cpuguy83
Para abordar su pregunta específica sobre cómo usar eso en la redacción, escriba en la sección de volumes
:
my-named-volume:
driver_opts:
type: none
device: /home/full/path #NOTE needs full path (~ doesn''t work)
o: bind
Esto se debe a que, como escribió cpuguy83 en el hilo de github vinculado, las opciones se pasan (bajo el capó) directamente al comando de mount
.
EDITAR: Según lo comentado por ...
- ... @ visslav, puede usar
${PWD}
para las rutas relativas. ... @ mikeyjk, es posible que necesite eliminar volúmenes preexistentes:
docker volume rm $(docker volume ls)
Hace poco buscaba una respuesta a la misma pregunta y me encontré con este complemento: https://github.com/CWSpear/local-persist Parece que permite lo que el tema que comencé quiere hacer.
Aún no lo he intentado, pero pensé que podría ser útil para alguien.
He estado probando lo (casi) lo mismo y parece funcionar con algo como:
version: ''2''
services:
example-app:
volume:
-named_vol:/dir/in/container/volume
-/c/Users/:/dir/in/container/volume
volumes:
named_vol:
Parece que funciona para mí (no lo busqué, solo lo probé).
Los volúmenes de host son diferentes de los volúmenes con nombre o los volúmenes anónimos. Su "nombre" es la ruta en el host.
No hay forma de usar la sección de volumes
para volúmenes de host.
OP parece que ya está utilizando rutas completas, pero si le gusta la mayoría de las personas, le interesa montar una carpeta de proyecto dentro del contenedor, esto podría ayudar.
Esto es cómo hacerlo con driver_opts
como @kaiser dijo y @linuxbandit ejemplificó. Pero puede intentar usar la variable de entorno generalmente disponible $ PWD para evitar especificar rutas completas para los directorios en el contexto de la ventana acoplable-composición:
logs-directory:
driver_opts:
type: none
device: ${PWD}/logs
o: bind