حل مشکل PostgreSQL FATAL: role does not exist error در داکر کامپوز

mohsen1 سال قبل
ارسال شده در
mohsen

برای بررسی سلامت (Healthcheck) کانتینر PostgreSQL در داکر کامپوز از دستور زیر استفاده می کنیم:

        db:
    image: postgres
    restart: unless-stopped
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
    labels:
      traefik.enable: false
    volumes:
      - /var/database:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      timeout: 5s
      retries: 5
    

اما با خطای زیر در لاگ داکر مواجه می شویم:

      FATAL role "postgres" does not exist.
    

برای رفع این خطا باید کاربری که بوسیله متغیر محیطی POSTGRES_USER تعریف کرده ایم را بعنوان ورودی به دستور pg_isready ارسال کنیم:

      pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}
    

توجه داشته باشید که اگر بوسیله پارامتر -d نام دیتابیس را مشخص نکنیم با خطای زیر مواجه خواهیم شد:

      FATAL:  database "db_username" does not exist
    

که db_username همان نام کاربری ارسال شده به دستور pg_isready است.

توجه: مقادیر مشخص شده به شکل ${POSTGRES_USER} ، متغیر های محیطی هستند که در فایل .env در کنار فایل داکر کامپوز تعریف شده اند.

رای
0
ارسال نظر
مرتب سازی:
اولین نفری باشید که نظر می دهید!