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.

Postgres con aplicación .Net en docker compose obtiene un error: el rol “root” no existe.

Tengo un servidor VPS en Ubuntu 20.04.
Por favor, ayúdame con esto, estoy atascado con esto, estoy comenzando mi aplicación con una base de datos postgresql en docker compose y obtengo este error, ¿qué estoy haciendo mal?

Captura de pantalla del error: enlace a la imagen de error

Mi archivo docker-compose.yml:

version: '3.8'

x-restart-policy: &restart_policy
  restart: unless-stopped

services:
  discord-bot:
    <<: *restart_policy
    depends_on: 
      - "postgres"
    container_name: discord-bot
    build:
      context: .
      dockerfile: DiscordBot.Application/Dockerfile
    environment: 
      - ENVIRONMENT=Release
    volumes: 
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro

  postgres:
      <<: *restart_policy
      image: postgres:latest
      container_name: discordBot-db
      env_file: .env
      healthcheck:
        test: ["CMD-SHELL", "pg_isready"]
        interval: 10s
        timeout: 5s
        retries: 5
      command: ["-c", "shared_buffers=512MB", "-c", "max_connections=500"]
      expose:
        - '5432'
      ports:
        - '5432:5432'
      volumes:
        - ./dockervolumes/postgress/srv/postgresql/data:/var/lib/postgresql/data

Mi archivo env:

POSTGRES_HOST_AUTH_METHOD=trust
POSTGRES_DB=My_dbname
POSTGRES_USER=postgres
POSRGRES_PASSWORD=my_pass

¿Qué estoy haciendo mal?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Según la captura de pantalla del error proporcionada, parece que el contenedor de postgres no puede iniciarse correctamente. Específicamente, el mensaje de error dice “FATAL: el rol “postgres” no existe”. Esto indica que la base de datos de postgres espera que exista un rol con el nombre “postgres”, pero no puede encontrarlo.

    Para solucionar este problema, puedes intentar agregar la siguiente variable de entorno a tu archivo docker-compose.yml bajo el servicio de postgres:

       postgres:
           ...
           environment:
             - POSTGRES_USER=postgres
    

    Esto debería crear un usuario de postgres con el nombre “postgres” que es el que el contenedor de postgres espera.

    Alternativamente, puedes intentar cambiar la variable de entorno POSTGRES_USER en tu archivo .env a otro nombre (por ejemplo, “myuser”) y luego actualizar el archivo docker-compose.yml para reflejar este cambio:

    POSTGRES_USER=myuser


    postgres:

    environment:
    – POSTGRES_USER=${POSTGRES_USER}

    Con este cambio, el contenedor de postgres buscará un usuario diferente con el nombre “myuser” en lugar de “postgres”.

    Una vez que hayas realizado estos cambios, deberías poder ejecutar docker-compose up nuevamente y ver si el contenedor de postgres se inicia correctamente.

Comments are closed.