es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

psycopg2.OperationalError: FATAL: el sistema de base de datos se está iniciando, Docker + Odoo

Tengo este archivo docker-compose:

versión: ‘3.7’

servicios:
db:
image: “postgres:9.6”
container_name: postgres-container
ports: [“6543:5432”]
environment:
– POSTGRES_USER=odoo
– POSTGRES_PASSWORD=admin
– POSTGRES_DB=odoo
restart: always
volumes:
– ./data/postgres:/var/lib/postgresql/data

odoo:
#build: ./odoo-container
image: odoo-image
container_name: odoo-container
ports: [“8069:8069”]
tty: true
command: opt/odoo/odoo-bin -c opt/odoo.conf -d teste
depends_on:
– db

El problema es que cuando inicio docker-compose, mi servicio db se ejecuta y cuando docker ejecuta el servicio odoo obtengo un error:

psycopg2.OperationalError: FATAL: el sistema de la base de datos se está iniciando

Y cuando reinicio el contenedor odoo, funciona.

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema parece ser que el contenedor de Odoo intenta conectarse a la base de datos de PostgreSQL antes de que se haya iniciado por completo. Una solución podría ser agregar una comprobación de salud al servicio de la base de datos en el archivo docker-compose para asegurarse de que la base de datos se haya iniciado por completo antes de que el contenedor de Odoo intente conectarse.

    Para agregar una comprobación de salud, puedes agregar las siguientes líneas al servicio de la base de datos:

    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U odoo -d odoo"]
    

    Esta comprobación de salud ejecutará el comando pg_isready para verificar que el usuario de Odoo pueda conectarse a la base de datos de Odoo. La comprobación de salud se ejecutará de forma continua y solo una vez que se conecte correctamente, se iniciará el contenedor de Odoo.

    Alternativamente, puedes agregar un retraso al inicio del contenedor de Odoo para que espere a que la base de datos esté disponible. Puedes hacer esto agregando un comando sleep a la línea command del contenedor de Odoo en el archivo docker-compose. Por ejemplo:

    command: sh -c "sleep 10 && opt/odoo/odoo-bin -c opt/odoo.conf -d teste"
    

    Esto retrasará el inicio del contenedor de Odoo en 10 segundos, dando más tiempo a la base de datos para iniciar por completo.

    Prueba cualquiera de estas soluciones para ver si resuelven el problema con el contenedor de Odoo que no se puede conectar a la base de datos de PostgreSQL.

Comments are closed.