I'm using Metabase to connect to a SQLite database and it's been working okay with this configuration:
version: '3.3'
services:
metabase:
volumes:
- /home/gregory/gregory/docker-data/:/metabase
ports:
- 3000:3000
# original docker image
# image: metabase/metabase
# my docker image with the default users
image: gregory/metabase
restart: always
I was reading up on how to run metabase with docker https://www.metabase.com/docs/latest/operations-guide/running-metabase-on-docker.html#using-postgres-as-the-metabase-application-database
From what I could understand I need to setup a new service with postgres to save the settings. Is that right?
Or can I just set the env variable to a folder next to the docker-compose?
The fastest, easiest way to share data and analytics inside your company. An open source Business Intelligence server you can install in 5 minutes that connects to MySQL, PostgreSQL, MongoDB and more! Anyone can use it to build charts, dashboards and...
Hi @brunoamaral
You would just set environment variables as recommended by docker-compose.
https://docs.docker.com/compose/environment-variables/
I don't completely understand what you're asking.
If you are currently using H2 as the application database inside the container, then you should migrate away from that, so you don't lose everything if you destroyed the container.
https://www.metabase.com/docs/latest/operations-guide/migrating-from-h2.html
Thanks for that @flamber , my goal is exacty making sure I don't lose users and dashboards once I restart the container.
Right now this is working:
version: '3.3'
services:
metabase:
volumes:
- /home/gregory/gregory/docker-data/:/metabase
- ./metabase-data:/metabase-data
environment:
- MB_DB_FILE=/metabase-data/metabase.db
ports:
- 3000:3000
# image: metabase/metabase
image: gregory/metabase
restart: always
But from what I understood of what you said I should include a postgres image in this docker-compose and run the migration steps.
@brunoamaral You should not use H2 in production. Doesn't matter where to store it. Don't use it.
https://www.metabase.com/docs/latest/operations-guide/migrating-from-h2.html
I don't know if you have Postgres running somewhere else or not, but that has more to do with how you run your network than anything specific to Metabase.
Here's an example: https://github.com/metabase/metabase/issues/8401#issuecomment-460182635
Thank you @flamber
For anyone trying to setup metabase with a PG db with docker, the following worked for me:
version: '3.3'
services:
db:
image: postgres
restart: always
environment:
- POSTGRES_PASSWORD=PASWORD
- POSTGRES_USER=USERNAME
- POSTGRES_DB=DATABASE
ports:
- 5432:5432
volumes:
- ./db-data:/var/lib/postgresql/data
networks:
- postgres-network
metabase:
volumes:
# setup your SQLITE db (optional)
- /PATH/TO/SQLITE/:/metabase
- ./metabase-data:/metabase-data
environment:
- MB_DB_FILE=/metabase-data/metabase.db
- MB_DB_TYPE=postgres
- MB_DB_DBNAME=DATABASE
- MB_DB_PORT=5432
- MB_DB_USER=USERNAME
- MB_DB_PASS=PASWORD
- MB_DB_HOST=db
ports:
- 3000:3000
image: metabase/metabase
restart: always
depends_on:
- db
networks:
- postgres-network
networks:
postgres-network:
driver: bridge
1 Like
@brunoamaral Thank you for sharing. You'll want to remove this, since it's not needed, when you're running on Postgres
- MB_DB_FILE=/metabase-data/metabase.db
1 Like
metabase:
image: metabase/metabase
ports:
- 3000:3000
volumes:
- postgres-db-volume:/metabase-data
tty: true
environment:
MB_DB_TYPE: postgres
MB_DB_DBNAME: test_database
MB_DB_PORT: 5432
Hi, this is my docker-compose however when i run the container, the metabase metadata tables are created in the 'test_database', where it should only be blank.
how to go around this. thank you
Luiggi
March 8, 2023, 1:29pm
8
I think there's some confusion in your docker-compose file, please refer to paoliniluis (paoliniluis) / Repositories · GitHub to see examples of how you should be doing that
@flamber Curious question: Why are you so persistent on trying to move the users away from in built H2? What could be the potential issues with that?
Luiggi
June 6, 2023, 6:21pm
10
H2 will corrupt and you will lose everything
sreddy
June 7, 2023, 2:16pm
11
Besides that, is there any scope for Metabase to stop supporting H2 in future releases?
Luiggi
June 7, 2023, 2:29pm
12
No, we’re not thinking to deprecate h2 anytime soon
I recently needed to spin up Metabase at work and have published an up to date compose file with SSL support and following Metabase production best practices: GitHub - jamesgreenblue/metabase-traefik-compose: A docker compose file to deploy a production ready Metabase instance
Feedback welcome in this topic:
Hello Metabase Community,
Here is a docker compose that I put together for production use (three months active use at this point):
Postgres (with encrypted connection information ) is used for application data. Traefik sits in front of Metabase to provide SSL termination (and generates Let's Encrypt certificates).
Hopefully others in the community who are self-hosting might find this useful.
I'm also very keen to receive feedback or suggestions to improve/harden the configuration (either he…