Mounting a mapped file storage volume
In its default configuration Metabase uses the local filesystem to run an H2 embedded database to store its own application data. The end result is that your Metabase application data will be on disk inside your container and lost if you ever remove the container.
To persist your data outside of the container and make it available for use between container launches we can mount a local file path inside our container.
docker run -d -p 80:3000 \ -v ~/metabase-data:/metabase-data \ -e "MB_DB_FILE=/metabase-data/metabase.db" \ --name metabase metabase/metabase
Now when you launch your container we are telling Metabase to use the database file at
~/metabase-data/metabase.db instead of its default location and we are mounting that folder from our local filesystem into the container.