Trying to run a postgresql db located in a directory (easily running from Mac or Ubuntu with
pg_ctl start -D pgdirectory/ )
docker network create pgnet docker run -it --rm --name pgdockerdb --network pgnet -p 5436:5432 # postgres is running in 5432 locally -v /local/path/to/pgdb:/var/lib/postgresql/data -e POSTGRES_DB=pgdb -e POSTGRES_USER=pguser -e POSTGRES_PASSWORD=sstrongggpass postgres_image
I receive following answer (translated from spanish to english -> I don’t know exact words that postgresql should write in english):
…first lines trying to create a new db…
initdb: error: directory «/var/lib/postgresql/data» exists but it is not empty
If you wan to create a new database cluster, erase or empty
the directory «/var/lib/postgresql/data», or exec initdb
with a different argument than «/var/lib/postgresql/data».
db exited with code 1
I tried to include a sh with
pg_ctl start -D . in volume /docker-entrypoint-initdb.d/
I tried to include PUID and PGID enviroment variables in docker-compose.yml from
id $user (root, user or 999 [because docker y chowning files to that user])
Worst thing is that one time worked but when y copied the up-to-date db, never worked again.
Source: Docker Questions