xirixiz / dsmr-reader-docker

DSMR Reader in Docker.
https://hub.docker.com/r/xirixiz/dsmr-reader-docker
114 stars 33 forks source link

Configure Postgres storage location #284

Closed DennisVredeveld closed 2 years ago

DennisVredeveld commented 2 years ago

Request

The non-Docker installation of DSMR reader offers the option to change the postgres configuration to use a different data storage location (see https://dsmr-reader.readthedocs.io/nl/v5/how-to/database/postgresql-change-storage-location.html). This requires manually editing the postgres.conf file to set this location. Could this be a DB-related setting/environment parameter? Or is there a different way of using this feature in a Docker installation of DSMR reader?

Additional information

No response

xirixiz commented 2 years ago

Ah, dit behoeft een crash course Docker zo te horen ✌🏻👍🏻. Ik kom er dit weekend even op terug, maar mss is er iemand die in de tussentijd kan helpen.

Je kan alvast iig kijken naar de voorbeeld docker-compose file, volumes, mounts, etc op de site van Docker of via Google. Mogelijk kom je er dan al uit.

"Docker mount postgres volume" oid is een goed begin op google.

DennisVredeveld commented 2 years ago

Het ging me er eigenlijk vooral om te weten of dit mogelijk is.... de crash course komt wel goed maar ik wilde niet aan een docker-based installatie beginnen zonder te weten in hoeverre dit zou gaan werken. En wat ik vergeten was er bij te zeggen: ik heb een eerdere non-docker installatie gehead die zijn data bewaard heeft in een bestaande mount. Maar het lijkt er op dat mijn eigenlijke vraag dus was: hoe laat ik de db-container deze reeds gemounte directory als volume gebruiken en moet ik daarna nog een restore backup uitvoeren? Wat inderaad niet echt een vraag is die met deze specifieke images te maken hebben. Sorry....

xirixiz commented 2 years ago

Late reactie, excuses, maar inderdaad je kan (mits PG dezelfde versie is in Docker) gewoon mounten en PG dan starten. Hooguit loop je tegen een rechtenissue aan, maar dat is uiteraard op te lossen. Misschien is het al gelukt in de tussentijd?

DennisVredeveld commented 2 years ago

De PG versies zijn gelijk, want het werkt zonder problemen als ik een lokale map gebruik. Wanneer ik echter een volume gebruik met een via NFS gedeelde map op mijn NAS, werkt dit enkel voor de backups. De dsmrdb container start niet op een geeft ERROR: for dsmrdb Cannot create container for service dsmrdb: failed to chmod on /var/lib/docker/volumes/pi_database/_data: chmod /var/lib/docker/volumes/pi_database/_data: operation not permitted Dus ja, ik denk wel dat ik tegen een rechtenissue aanloop :) De NFS share staat volledig open voor zover ik kan nagaan (rw, squash to admin) Bij no root squash krijg ik ERROR: for dsmrdb Cannot create container for service dsmrdb: failed to copy file info for /var/lib/docker/volumes/pi_database/_data: failed to chown /var/lib/docker/volumes/pi_database/_data: lchown /var/lib/docker/volumes/pi_database/_data: invalid argument ERROR: Encountered errors while bringing up the project. Tips?

xirixiz commented 2 years ago

Dat is eenvoudig op te lossen 😁. Ik kom er morgen even op terug.

DennisVredeveld commented 2 years ago

Ok, ik ben benieuwd! Misschien sowieso goed om dat een plek in de documentatie te geven? Als iedereen op de een of andere manier een volume voor de DB moet maken, kan ik me voorstellen dat meer mensen tegen dit probleem aanlopen.

xirixiz commented 2 years ago

Please check the --user section: https://hub.docker.com/_/postgres

Summary: Make sure to match the UID:GID of the owner of your nfs share the same UID:GID used inside the container to run Postgres.

And: use a volume instead of bind-mounts. If the nfs share becomes stale, the container will remedy the problem byitself. If the nfs mount on the host becomes stale things usualy get weird.

https://stackoverflow.com/questions/39922161/mounting-nfs-shares-inside-docker-container

Hope this provides some usefull information.

DennisVredeveld commented 2 years ago

Het Volume is volgens mij niet het probleem, dit heb ik werkend: database: driver_opts: type: "nfs" o: "addr=192.168.178.12,rw,nolock,soft,nfsvers=4" device: ":volume1/piDatabase"

De opmerking m.b.t. UID/GID had ik gezien maar eerlijk gezegd is niet precies duidelijk hoe je daar dan voor zorgt en hoe ik weet welke gebruikt worden aan de NFS kant en in de container. Lijkt me dat meer beginnende docker-gebruikers daar tegenaan lopen, vandaar de suggestie voor iets uitgebreidere documentatie :)

github-actions[bot] commented 2 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

DennisVredeveld commented 2 years ago

@xirixiz any updates yet?

github-actions[bot] commented 2 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.