Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

801
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda