PostgreSQL Custom Docker Image With Volume Entrypoint Questions
Hello, I have a Docker Image for PSQL with a volume attatched to that service that I am trying to run, on initial startup however, I get the following: PostgreSQL Database directory appears to contain a database; Skipping initialization. How can I have a volume attached but still get this to run? Thanks!
Solution:Jump to solution
your dockerfile would need to copy the docker-entrypoint-initdb.d file into the applicable location
13 Replies
Project ID:
b2136db9-ae75-4237-ac77-4e079154cc94
b2136db9-ae75-4237-ac77-4e079154cc94
please add more context
Dockerfile:
Docker Compose:
Volume is mounted at /var/lib/postgresql/data
PGDATA is currently set at /var/lib/postgresql/data/pgdata
railway services can not have two volumes
Gotcha
What approach would you recommend here?
Solution
your dockerfile would need to copy the docker-entrypoint-initdb.d file into the applicable location
Okay makes sense, thanks!
but even so, its a init script and will not be ran on every redeploy, it will only be ran if there is an empty data volume
Yeah that's fine. I'm assuming adding a volume is the only way to persist data in a Railway service? Or will it do it by default?
you are correct, volumes are the only way to persist files on disk
can you add some more context though? what does docker-entrypoint-initdb.d do?
Just creates some tables and sets up permissions. I only need it on the original creation of the DB
then yeah, copy it into the correct location, and then wipe the volume to allow it to run again