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

828
Views
¿Cómo usar el volumen en docker compose para postgres?

Aquí está laimagen que estoy usando.

Lo nombré posgres_test

Si ejecuto la imagen individualmente

 docker run -i -t -v="test_volume:/var/lib/postgresql" -p 5432:5432 posgres_test

Puedo acceder con

 psql -h 192.168.99.100 -p 5432 -U pguser -W pgdb

O puedo acceder a él con mi aplicación golang

 // host is set to postgres db, err := sql.Open("postgres", "postgres://pguser:pguser@postgres:5432/pgdb") // table test_db is manually created. rows, err := db.Query("SELECT name FROM test_db WHERE)

Sin embargo, si uso docker compose

docker-compose.yml

 version: "2" services: postgres: image: my_image/postgresql:9.3 volumes: - test_volume:/var/lib/postgresql ports: - "5432:5432" web: image: my-golang-app4 ports: - "8080:8080" volumes: test_volume: {}

me sale lo siguiente

 pguser@pgdb ERROR: relation "test_db" does not exist at character 15

Sé con certeza que test_db existe en test_volume desde

 docker run -i -t -v="test_volume:/var/lib/postgresql" -p 5432:5432 posgres_test psql -h 192.168.99.100 -p 5432 -U pguser -W pgdb \dt

mostrará la tabla que creé

Pero parece que mi aplicación en docker compose no puede encontrarla

¿Alguien me puede ayudar?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Acerca de su archivo docker-compose

  1. En primer lugar, pensé que se debía a que no usa la opción 'enlaces' para vincular su contenedor de postgres al contenedor web; es una buena práctica si no expande los puertos, pero expande el puerto de postgres.

  2. Si desea usar la herencia de la imagen que publicó en lugar de usar esta línea:

mi_imagen/postgresql:9.3

usar:

 docker/postgres

y cree la ruta docker/postgres y allí coloque Dockerfile con la herencia del contenedor que desee.

  1. Siempre uso compartir volúmenes en docker-compose.yml así:

    .:/var/www/html

. es la ruta de mi proyecto donde coloco mis archivos de código.

Imagen que creé para probar este caso

No tengo la estructura de todos los archivos de la ventana acoplable para reproducir este error y solucionarlo, así que creé docker-compose que debería satisfacer sus necesidades o ayudar a solucionar su problema:

 version: '2' services: web: build: docker/web ports: - "8080:8080" links: - dbpostgres volumes: - .:/var/www/html # I will share my code so I map this path dbpostgres: image: postgres volumes: - /private/var/lib/postgresql:/var/lib/postgresql ports: - "5432:5432" environment: POSTGRES_USER: pguser POSTGRES_PASSWORD: pguser POSTGRES_DB: pgdb

Notas:

  1. Recomendaré usar la imagen oficial de postgres.

  2. Dejé comentarios al lado de las líneas.

Cómo hice la conexión:

 host=dbpostgres port=5432 dbname=pgdb user=pguser password=pguser

Debido a que mi contenedor web ahora conoce host dbpostgres (nombre de imagen y nombre de dominio), los vinculo mediante enlaces.

Si necesita una base de datos de un contenedor existente

Si necesita una base de datos de su contenedor existente, simplemente use la opción docker cp para copiar la base de datos localmente:

 docker cp posgres_test:/var/lib/postgresql /private/var/lib/postgresql

donde /private/var/lib/postgresql es la ruta en su servidor local. También necesita cambiar las credenciales a db en docker-compose a sus credenciales anteriores. Debe hacerlo antes de ejecutar docker-compose porque si db no existe, se creará.

Cualquier pregunta, hágamelo saber.

over 4 years ago · Santiago Trujillo Report

0

Si el volumen es externo y ya existía antes del uso de docker-compose, debe declararlo externo o, de lo contrario, docker compose creará un nuevo volumen con el nombre del proyecto como prefijo.

 volumes: test_volume: external: true

Documentos para uso external de compose v3 (en su mayoría similares a v2 ): https://docs.docker.com/compose/compose-file/compose-file-v3/#external

over 4 years ago · Santiago Trujillo Report

0

Creo que debería ser algo como esto para ti.

 docker run -itd -p 5432:5432 --name postgres_test -v /path/in/your/host :/path/in/your/container postgres_test psql -h 192.168.99.100 -p 5432 -U pguser -W pgdb

Lea documentos de Docker ( https://docs.docker.com/engine/tutorials/dockervolumes/ ), vea tutoriales (hay un canal de Youtube de Docker con excelentes tutoriales).

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!