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.