Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

793
Vistas
Cómo persistir datos en una base de datos postgres dockerizada usando volúmenes

Mi archivo de composición docker tiene tres contenedores, web, nginx y postgres. Postgres se ve así:

 postgres: container_name: postgres restart: always image: postgres:latest volumes: - ./database:/var/lib/postgresql ports: - 5432:5432

Mi objetivo es montar un volumen que corresponda a una carpeta local llamada ./database dentro del contenedor de postgres como /var/lib/postgres . Cuando inicio estos contenedores e inserto datos en postgres, verifico que /var/lib/postgres/data/base/ está lleno de los datos que estoy agregando (en el contenedor de postgres), pero en mi sistema local, ./database solo obtiene una carpeta de data , es decir, se crea ./database/data , pero está vacío. ¿Por qué?

Notas:

  • Esto sugiere que mi archivo anterior debería funcionar.
  • Esta persona está usando los servicios de Docker, lo cual es interesante.

ACTUALIZAR 1

Por sugerencia de Nick, docker inspect y encontré:

 "Mounts": [ { "Source": "/Users/alex/Documents/MyApp/database", "Destination": "/var/lib/postgresql", "Mode": "rw", "RW": true, "Propagation": "rprivate" }, { "Name": "e5bf22471215db058127109053e72e0a423d97b05a2afb4824b411322efd2c35", "Source": "/var/lib/docker/volumes/e5bf22471215db058127109053e72e0a423d97b05a2afb4824b411322efd2c35/_data", "Destination": "/var/lib/postgresql/data", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" } ],

Lo que hace que parezca que los datos están siendo robados por otro volumen que no codifiqué yo mismo. No estoy seguro de por qué es eso. ¿La imagen de postgres está creando ese volumen para mí? Si es así, ¿hay alguna forma de usar ese volumen en lugar del volumen que estoy montando cuando reinicio? De lo contrario, ¿hay una buena manera de deshabilitar ese otro volumen y usar el mío propio, ./database de datos?

ACTUALIZAR 2

¡Encontré la solución, gracias a Nick! (y otro amigo) Responda a continuación.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Por extraño que parezca, la solución terminó siendo cambiar

 volumes: - ./postgres-data:/var/lib/postgresql

para

 volumes: - ./postgres-data:/var/lib/postgresql/data
over 4 years ago · Santiago Trujillo Denunciar

0

Puede crear un volumen común para todos los datos de Postgres

 docker volume create pgdata

o puede configurarlo en el archivo de redacción

 version: "3" services: db: image: postgres environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgress - POSTGRES_DB=postgres ports: - "5433:5432" volumes: - pgdata:/var/lib/postgresql/data networks: - suruse volumes: pgdata:

Creará el nombre de volumen pgdata y montará este volumen en la ruta del contenedor.

Puede inspeccionar este volumen

 docker volume inspect pgdata // output will be [ { "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/pgdata/_data", "Name": "pgdata", "Options": {}, "Scope": "local" } ]
over 4 years ago · Santiago Trujillo Denunciar

0

Evitaría usar una ruta relativa. Recuerde que docker es una relación demonio/cliente.

Cuando está ejecutando la redacción, básicamente se divide en varios comandos del cliente de la ventana acoplable, que luego se pasan al daemon. Esa ./database de datos es entonces relativa al daemon , no al cliente.

Ahora, el equipo de desarrollo de Docker tiene algunas idas y vueltas sobre este tema , pero la conclusión es que puede tener algunos resultados inesperados.

En resumen, no use una ruta relativa, use una ruta absoluta.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda