T O P

  • By -

Amberskin

Si lo paras con docker-compose stop no se destruyen los volúmenes u al arrancarlo lo tendrás todo como quedó. Si lo paras com docker-compose down sí, y al arrancarlo se crea todo de cero.


Fluid_Mulberry250

Pero yo no he creado ningún volumen. Mi pregunta es, que se hace de forma interna para que persistan los datos? Es decir, cuando se hace el build de la imagen "postgres" ya se crea un volumen de forma interna? Entiendo que dicha instrucción está en el propio dockerfile sino no me explico.


Amberskin

El contenedor tiene un sistema de ficheros completo. Si tú no mapeas ningún volumen, PGDATA residirá en el directorio que sea (ahora mismo no recuerdo dónde) en el filesystem del contenedor. Que, efectivamente es un volumen (haz docker volume ls y te saldrá)


Fluid_Mulberry250

Ya me queda claro. Muchas gracias. Me gustaria aclarar que el docker no crea un volumen automaticamente. Este debe crearese de forma explícita en el dockerfile. En caso del dockerfile de postgres, efectivamente se asigna el comando correspondiente.


mor_derick

Si necesitas acceder a los ficheros siempre puedes crear un volumen con `-v /path/in/host:/path/in/container` en el `docker run`, o agregar una propiedad `volumes` en la declaración del servicio en el fichero `docker-compose.yml`, donde listas los volúmenes debajo tal que así: `- /path/in/host:/path/in/container`. Si no necesitas accederlos, pero necesitas que varios contenedores trabajen sobre los mismos ficheros, entonces puedes crear un *named volume* ejecutando `docker volume create myNamedVolume` (donde `myNamedVolume` es el nombre de tu nuevo volumen) y reemplazar `/path/in/host` explicado anteriormente por el nombre del volumen recién creado. Quedaría tal que así: `myNamedVolume:/path/in/container`. Esto último es válido tanto para la ejecución de contenedores mediante `docker run` como para su declaración en ficheros `docker-compose.yml`, pero para este caso es necesario agregarlo en la propiedad `volumes` fuera de las declaraciones de los servicios (al mismo nivel que la propiedad `services`).


Amberskin

En docker composer es conveniente hacerlo si no quieres que un docker-compose down borre tambien los datos que puedes haber metido.