skip to Main Content

I setup my django and postgres container on my local machine and all working fine. Local server is running, database running but I am not being able to connect to the created postgres db.

docker-compose.yml

version: '3'

services:
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/app
    ports:
      - "8000:8000"
    depends_on:
      - db

  db:
    image: postgres:13.0-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER=my_user
      - POSTGRES_PASSWORD=my_password
      - POSTGRES_DB=my_db

volumes:
  postgres_data:

I tried this command:
docker exec -it container_id psql -U postgres
error:
psql: error: could not connect to server: FATAL: role "postgres" does not exist

I am very new to Docker.

4

Answers


  1. You’re not using the username and the password you provided in your docker-compose file. Try this and then enter my_password:

    docker exec -it container_id psql -U my_user -d my_db --password
    

    Check the official documentation to find out about the PostgreSQL terminal.

    Login or Signup to reply.
  2. I would also like to add, in your compose file you’re not exposing any ports for the db container. So it will be unreachable via external sources (you, your app or anything that isn’t ran within that container).

    Login or Signup to reply.
  3. I think you need to add environment to project container.

       environment:
          - DB_HOST=db
          - DB_NAME=my_db
          - DB_USER=youruser
          - DB_PASS=yourpass
       depends_on:
          - db
    

    add this before depends_on

    And now see if it solves

    Login or Signup to reply.
  4. You should add ports to the docker-compose for the postgres image,as this would allow postgres to be accessible outside the container

    - ports: 
       "5432:5432"
    

    You can checkout more here docker-compose for postgres

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search