this post was submitted on 26 Mar 2024
11 points (92.3% liked)

Docker

1124 readers
1 users here now

founded 2 years ago
MODERATORS
 

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

you are viewing a single comment's thread
view the rest of the comments
[–] ptz@dubvee.org 4 points 9 months ago* (last edited 9 months ago) (2 children)

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.

[–] sabreW4K3@lazysoci.al 2 points 9 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!
[–] sabreW4K3@lazysoci.al 2 points 9 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.