Saltar al contenido

No se pudo traducir el nombre de host “db” a la dirección usando Postgres, Docker Compose y Psycopg2

Hola, encontramos la respuesta a tu búsqueda, deslízate y la verás aquí.

Solución:

El problema es que no deberías estar corriendo. python base.py como parte de la RUN directiva.

los RUN La directiva se ejecuta solo cuando está construyendo la imagen. los postgres El contenedor no se está ejecutando en este momento, ni se ha creado la red. En su lugar, desea utilizar el CMD directiva.

Cambiar el Dockerfile a esto:

FROM ubuntu:16.04

RUN apt-get update
RUN apt-get -y install python-pip
RUN apt-get update
RUN pip install --upgrade pip
RUN pip install psycopg2-binary

COPY base.py base.py

CMD ["python", "base.py"]

Lo anterior debería dar como resultado el nombre de host db ser resuelto. Sin embargo, si su código python no tiene ninguna lógica de reconexión para conectarse a la base de datos, es probable que el contenedor aún produzca un error. Esto porque el postgres El contenedor se estará ejecutando pero la base de datos no estará lista para aceptar conexiones.

Esto se puede arreglar temporalmente agregando restart: always para usted docker-compose.yml.

version: '3'
services:
  db:
    image: 'postgres:latest'
    expose:
      - "5432"
    environment:
      POSTGRES_PASSWORD: pw1234
      POSTGRES_DB: base123
  aprrka:
    restart: always
    build: .    
    depends_on:
      - db

Con suerte, esto lo pondrá en marcha.

Agregar red, enlace y depende_de configuración en el archivo de composición de la ventana acoplable.

algo como esto:

  services:
      db:
          build: .
          container_name: db
          networks:
              - djangonetwork
      web:
          build: .
          depends_on:
             - db
          links:
             - db:db
          networks:
             - djangonetwork

  networks:
      djangonetwork:
          driver: bridge

la configuración anterior me ayudó a resolver el nombre de host para conectarme a la base de datos.

Si está utilizando docker-compose, primero agregue esta línea a su .yml:

environment:
  - "POSTGRES_HOST_AUTH_METHOD=trust"

Después de eso, solo inicias tu db docker:

docker-compose up db

Debería comenzar normalmente con un mensaje como:

Recreating db... done
Attaching to db
db_1           | ********************************************************************************
db_1           | WARNING: POSTGRES_HOST_AUTH_METHOD has been set to "trust". This will allow
db_1           |          anyone with access to the Postgres port to access your database without
db_1           |          a password, even if POSTGRES_PASSWORD is set. See PostgreSQL
db_1           |          documentation about "trust":
db_1           |          https://www.postgresql.org/docs/current/auth-trust.html
db_1           |          In Docker's default configuration, this is effectively any other
db_1           |          container on the same system.
db_1           | 
db_1           |          It is not recommended to use POSTGRES_HOST_AUTH_METHOD=trust. Replace
db_1           |          it with "-e POSTGRES_PASSWORD=password" instead to set a password in
db_1           |          "docker run".
db_1           | ********************************************************************************

Al final de todo puedes encontrar las reseñas de otros creadores, tú igualmente tienes el poder mostrar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *