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

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

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

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

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 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