I’m trying to create a postgres container, I have the following in my Docker Compose:

db:
  container_name: db
  image: postgres
  restart: always
  environment:
    #POSTGRES_USER="postgres"
    POSTGRES_PASSWORD: HDFnWzVZ5bGI
  ports:
    - 5432:5432
  volumes:
    - pgdata:/var/lib/postgresql/data
adminer:
  container_name: adminer
  image: adminer
  restart: always
  ports:
    - 8338:8080

And yet Docker keeps saying that the database is initialized and that the superuser is not specified. Where am I going wrong?

I’ve tried with and without equals, a hyphen, quotation marks. No matter what I try, it won’t see it.

#Solution:

Find:

  volumes:
    - pgdata:/var/lib/postgresql/data

Replace:

  volumes:
    - /opt/postgres/data:/var/lib/postgresql/data

More info: https://lazysoci.al/comment/8597610

  • Admiral Patrick@dubvee.org
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    8 months ago

    If there is already an initialized database, the environment variables will be ignored.

    What you have looks correct; the POSTGRES_USER variable only needs to be set if you want it to be something other than postgres.

    Note: If you use dashes, I believe it’s KEY=Value and if you don’t use dashes, it’s KEY: value

    Try giving it a clean data volume and re-running to see if it picks it up.

    • sabreW4K3OP
      link
      fedilink
      arrow-up
      2
      ·
      8 months ago

      Thanks, I’ll give this a go during breakfast. I’ve been pulling out my hair and this seems the most likely solution I didn’t think of.

    • sabreW4K3OP
      link
      fedilink
      arrow-up
      2
      ·
      8 months ago

      Thank you so much, your comment set me in the right direction. Turns out the tutorial I followed which had the data volume empty was the culprit*. So when I actually mapped it to something, it started working.

      • I’m blaming the tutorial, but it was totally my fault!