Me gustaría compartir una carpeta del host docker con un contenedor específico usando docker-compose. Un contenedor que ejecuta MongoDB debe colocar sus archivos de datos en /var/lib/mongodb, pero esta carpeta debe montarse en la carpeta de hosts /var/lib/mongodb.
Pero sigue siendo un directorio local propio dentro del contenedor, no el compartido del host.
A veces también termina con la siguiente advertencia:
ADVERTENCIA: El servicio "mongodb" está utilizando el volumen "/var/lib/mongodb" del contenedor anterior. La asignación de host "name_dbvolume" no tiene efecto. Elimine los contenedores existentes (con
docker-compose rm mongodb) para usar la asignación de volumen de host.
version: '2' services: loopback: build: . expose: - "80" - "443" - "28015" - "29015" ports: - 3000:3000 links: - mongodb environment: VIRTUAL_HOST: api.xxxxxx.com VIRTUAL_PORT: 3000 LETSENCRYPT_EMAIL: yyyyyy@xxxxxxx.com LETSENCRYPT_HOST: api.xxxxx.com mongodb: build: ./MongoDB ports: - "27017:27017" - "27018:27018" - "27019:27019" - "28017:28017" volumes: - dbvolume:/var/lib/mongodb volumes: dbvolume: FROM mongo:latest RUN mkdir -p /var/lib/mongodb && \ touch /var/lib/mongodb/.keep && \ chown -R mongodb:mongodb /var/lib/mongodb ADD mongodb.conf /etc/mongodb.conf VOLUME [ "/var/lib/mongodb" ] # EXPOSE 27017 USER mongodb WORKDIR /var/lib/mongodb ENTRYPOINT ["/usr/bin/mongod", "--config", "/etc/mongodb.conf"] CMD ["--quiet"]El contenedor mongodb está configurado para que MongoDB use /var/lib/mongodb como directorio de datos. Con el siguiente comando intentamos usar esta carpeta desde el host:
VOLUMEN [ "/var/lib/mongodb" ]
¿Qué hice mal aquí?
Su configuración de redacción configura un volumen de datos con nombre llamado dbvolume
Un volumen con nombre se almacenará en /var/lib/docker de forma predeterminada:
→ docker volume inspect dbvolume [ { "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/dbvolume/_data", "Name": "dbvolume", "Options": {}, "Scope": "local" } ]Montar un directorio de host como un volumen es ligeramente diferente en un archivo de composición.
volumes: - /var/lib/mongodb:/var/lib/mongodbLa fuente todavía está a la izquierda, pero especifica la ruta completa en lugar de un nombre.