I am following the symfony book on symfony.com to learn symfony. When I create my symfony project I update my docker-compose.yml like this (values for the db name, password and user are just example):
version: '3'
services:
###> doctrine/doctrine-bundle ###
database:
image: postgres:${POSTGRES_VERSION:-15}-alpine
environment:
POSTGRES_DB: testdb
# You should definitely change the password in production
POSTGRES_PASSWORD: 123
POSTGRES_USER: test
volumes:
- database_data:/var/lib/postgresql/data:rw
ports:
- "5433:5432"
# You may use a bind-mounted host directory instead, so that it is harder to accidentally remove the volume and lose all your data!
# - ./docker/db/data:/var/lib/postgresql/data:rw
###< doctrine/doctrine-bundle ###
volumes:
###> doctrine/doctrine-bundle ###
database_data:
###< doctrine/doctrine-bundle ###
When running this command in CLI in the project folder:
docker-compose up -d
It will create new docker container running the postgres:postgres docker container
The problem is when I try to connect to the postgres instance running in the container.
When I try to connect via PSQL CLI with credentials specified in the docker-compose.yaml I get this error:
psql: error: connection to server at "localhost" (::1), port 57514 failed: FATAL: password authentication failed for user "test"
However I can connect with credentials which were default when I create the symfony project.
Default configuration:
version: '3'
services:
###> doctrine/doctrine-bundle ###
database:
image: postgres:${POSTGRES_VERSION:-15}-alpine
environment:
POSTGRES_DB: ${POSTGRES_DB:-app}
# You should definitely change the password in production
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-!ChangeMe!}
POSTGRES_USER: ${POSTGRES_USER:-app}
volumes:
- database_data:/var/lib/postgresql/data:rw
# You may use a bind-mounted host directory instead, so that it is harder to accidentally remove the volume and lose all your data!
# - ./docker/db/data:/var/lib/postgresql/data:rw
###< doctrine/doctrine-bundle ###
volumes:
###> doctrine/doctrine-bundle ###
database_data:
###< doctrine/doctrine-bundle ###
So when I connect with user app and password !ChangeMe! it will connect.
I am on windows 10
I tried to configure the docker-compose.yml but with no succes.
2
Answers
Notice this waning from the postgres image docs:
If you first started this container with some values for POSTGRES_USER, POSTGRES_DB and POSTGRES_PASSWORD, these have been saved into the data directory and will persist even if you start again the container with other values.
If you want to use another user/password you can
docker-compose down
(docs, YOU WILL LOSE ALL DATA IN THE VOLUMES!)I think you are pointing to the wrong postgres instance. Your instance is running on the port
5433
but the error is referring toport 57514 failed
.I also gave the docker-compose file a quick try and it looks to be working as expected when using the connection details below.