I know I'm probably the last one to find this out, but this has been an issue for a long time for me. I've been constantly building and storing SQL files in the actual container layers, thinking that was the correct way to do it. Thankfully, I was completely wrong.
Here is the correct way to do it.
Assuming you are in a directory with the SQL files you want.
FROM postgres:12.8
COPY *.sql /docker-entrypoint-initdb.d/
On startup Postgres will load the SQL files into the database. I've wasted a lot of time doing it the other way and somehow missed this the entire time. Hopefully I save you a bunch of time!
For Mongo
FROM mongo:4.2
COPY dump /docker-entrypoint-initdb.d/
COPY restore.sh /docker-entrypoint-initdb.d/
The restore.sh
script is below.
#!/bin/bash
cd /docker-entrypoint-initdb.d || exit
ls -ahl
mongorestore /docker-entrypoint-initdb.d/
Just do a mongodump
into a directory called dump
and then when you want it, load the data with the restore.sh
script inside the container.