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?
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:
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.