Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

588
Views
La ruta relativa no funciona con volúmenes con nombre en docker-compose.yml

Necesito hacer que un volumen con nombre use una ruta relativa a la carpeta donde se ejecuta el comando docker-compose .

Aquí está la definición de volumen en docker-compose.yml

 volumes: esdata1: driver: local driver_opts: type: none device: ./esdata1 o: bind

Parece que docker-compose no crea la carpeta si no existe , pero incluso cuando la carpeta se crea antes de iniciar la ventana acoplable, siempre recibo este error:

 ERROR: for esdata Cannot create container for service esdata: error while mounting volume with options: type='none' device='./esdata1' o='bind': no such file or directory

NOTA: Esto puede ser una tontería, pero esdata es el servicio que usa el volumen con nombre

 esdata: ... volumes: - esdata1:/usr/share/elasticsearch/data ...

¿Qué me estoy perdiendo aquí?

Tal vez la ruta relativa ./ no apunte a la carpeta donde se ejecuta docker-compose (he intentado con ~/ usar una carpeta relativa a la casa del usuario pero obtuve el mismo error).

Gracias por adelantado,

PD: si uso una ruta absoluta, funciona a las mil maravillas

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Encontré exactamente el mismo problema. Parece que no has hecho nada malo. Esto aún no está implementado en Docker: https://github.com/docker/compose/issues/6343

No es muy agradable para la portabilidad...

over 4 years ago · Santiago Trujillo Report

0

Si usa un montaje de vinculación con nombre como este, debe incluir la ruta completa al archivo, por ejemplo:

 volumes: esdata1: driver: local driver_opts: type: none device: /home/username/project/esdata1 o: bind

Esa carpeta también debe existir de antemano. Así es como funciona Linux bind mount syscall, y cuando pasa indicadores como este, está hablando directamente con Linux sin ninguna expansión de ruta por docker o compose.

Si solo desea montar el directorio desde el host, el uso de un volumen de host se expandirá para la ruta relativa al componer:

 esdata: ... volumes: - ./esdata1:/usr/share/elasticsearch/data ...

Si bien el volumen del host es más fácil para la portabilidad, ya que la ruta se expande automáticamente, perderá la función de los volúmenes con nombre donde la ventana acoplable inicializa un volumen con nombre vacío con el contenido de la imagen (incluidos los permisos/la propiedad del archivo).

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!