Skip Navigation

Docker not accepting environment variable

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're viewing a single thread.

13 comments
  • 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.

    • 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.

    • 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!
13 comments