-
-
Save eliashussary/379e44a99e2389bd6a8ea6a23c2d5af8 to your computer and use it in GitHub Desktop.
version: "3" | |
services: | |
postgres-db: | |
image: postgres | |
restart: always | |
ports: | |
- 5432:5432 | |
environment: | |
POSTGRES_PASSWORD: postgres | |
PGDATA: /var/lib/postgresql/data | |
volumes: | |
# declare your mount volume /host/dir:/container/dir | |
- /home/app/pgdata:/var/lib/postgresql/data | |
metabase-app: | |
image: metabase/metabase | |
restart: always | |
ports: | |
- 3001:3000 | |
volumes: | |
# declare your mount volume /host/dir:/container/dir | |
- /home/app/metabase-data:/metabase-data | |
environment: | |
MB_DB_TYPE: postgres | |
MB_DB_DBNAME: metabase | |
MB_DB_PORT: 5432 | |
MB_DB_USER: metabase | |
MB_DB_PASS: postgres | |
MB_DB_HOST: postgres-db | |
depends_on: | |
- postgres-db | |
links: | |
- postgres-db |
did this work for anyone ? i added like below in compose file.
volumes:
- ./metabase-data:/metabase-data
environment:
MB_DB_FILE: /metabase-data/metabase.dbbut its creating an empty folder metabase.db. Am i doing something wrong?
this is quite an old docker-compose
file that i had for personal use as @oskar-fagerfjall pointed out, it attempts to fallback to an h2 database; which is a file based database.
i just attempted to run this docker-compose
and i get a bunch of errors in the metabase container log.
org.postgresql.util.PSQLException: FATAL: database "metabase" does not exist
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2497)
at org.postgresql.core.v3.QueryExecutorImpl.readStartupMessages(QueryExecutorImpl.java:2618)
at org.postgresql.core.v3.QueryExecutorImpl.<init>(QueryExecutorImpl.java:135)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:250)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)
at org.postgresql.Driver.makeConnection(Driver.java:458)
at org.postgresql.Driver.connect(Driver.java:260)
at java.sql/java.sql.DriverManager.getConnection(Unknown Source)
at java.sql/java.sql.DriverManager.getConnection(Unknown Source)
at clojure.java.jdbc$get_driver_connection.invokeStatic(jdbc.clj:271)
at clojure.java.jdbc$get_driver_connection.invoke(jdbc.clj:250)
at clojure.java.jdbc$get_connection.invokeStatic(jdbc.clj:411)
at clojure.java.jdbc$get_connection.invoke(jdbc.clj:274)
at clojure.java.jdbc$db_query_with_resultset_STAR_.invokeStatic(jdbc.clj:1111)
at clojure.java.jdbc$db_query_with_resultset_STAR_.invoke(jdbc.clj:1093)
at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1182)
at clojure.java.jdbc$query.invoke(jdbc.clj:1144)
at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1160)
at clojure.java.jdbc$query.invoke(jdbc.clj:1144)
at metabase.driver.sql_jdbc.connection$can_connect_QMARK_.invokeStatic(connection.clj:161)
at metabase.driver.sql_jdbc.connection$can_connect_QMARK_.invoke(connection.clj:156)
at metabase.driver.sql_jdbc$fn__73046.invokeStatic(sql_jdbc.clj:36)
at metabase.driver.sql_jdbc$fn__73046.invoke(sql_jdbc.clj:34)
at clojure.lang.MultiFn.invoke(MultiFn.java:234)
at metabase.driver.util$can_connect_with_details_QMARK_$fn__22394.invoke(util.clj:30)
at metabase.util$do_with_timeout$fn__9213.invoke(util.clj:310)
at clojure.core$binding_conveyor_fn$fn__5754.invoke(core.clj:2030)
at clojure.lang.AFn.call(AFn.java:18)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
06-19 12:57:12 ERROR metabase.core :: Metabase Initialization FAILED
java.lang.Exception: Looks like the database name is incorrect.
at metabase.driver.util$can_connect_with_details_QMARK_.invokeStatic(util.clj:35)
at metabase.driver.util$can_connect_with_details_QMARK_.doInvoke(util.clj:18)
at clojure.lang.RestFn.invoke(RestFn.java:442)
at clojure.lang.Var.invoke(Var.java:393)
at metabase.db$fn__21334$verify_db_connection__21343$fn__21346$fn__21347.invoke(db.clj:309)
at metabase.db$fn__21334$verify_db_connection__21343$fn__21346.invoke(db.clj:308)
at metabase.db$fn__21334$verify_db_connection__21343.invoke(db.clj:300)
at metabase.db$fn__21334$verify_db_connection__21343$fn__21344.invoke(db.clj:303)
at metabase.db$fn__21334$verify_db_connection__21343.invoke(db.clj:300)
at metabase.db$setup_db_BANG__STAR_$fn__21382.invoke(db.clj:345)
at metabase.util$do_with_us_locale.invokeStatic(util.clj:649)
at metabase.util$do_with_us_locale.invoke(util.clj:635)
at metabase.db$setup_db_BANG__STAR_.invokeStatic(db.clj:344)
at metabase.db$setup_db_BANG__STAR_.invoke(db.clj:339)
at metabase.db$setup_db_from_env_BANG__STAR_.invokeStatic(db.clj:354)
at metabase.db$setup_db_from_env_BANG__STAR_.invoke(db.clj:351)
at metabase.db$setup_db_BANG_$fn__21393.invoke(db.clj:368)
at metabase.db$setup_db_BANG_.invokeStatic(db.clj:366)
at metabase.db$setup_db_BANG_.invoke(db.clj:361)
at metabase.core$init_BANG_.invokeStatic(core.clj:77)
at metabase.core$init_BANG_.invoke(core.clj:56)
at metabase.core$start_normally.invokeStatic(core.clj:123)
at metabase.core$start_normally.invoke(core.clj:117)
at metabase.core$_main.invokeStatic(core.clj:156)
at metabase.core$_main.doInvoke(core.clj:150)
at clojure.lang.RestFn.invoke(RestFn.java:397)
at clojure.lang.AFn.applyToHelper(AFn.java:152)
at clojure.lang.RestFn.applyTo(RestFn.java:132)
at metabase.core.main(Unknown Source)
Caused by: org.postgresql.util.PSQLException: FATAL: database "metabase" does not exist
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2497)
at org.postgresql.core.v3.QueryExecutorImpl.readStartupMessages(QueryExecutorImpl.java:2618)
at org.postgresql.core.v3.QueryExecutorImpl.<init>(QueryExecutorImpl.java:135)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:250)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)
at org.postgresql.Driver.makeConnection(Driver.java:458)
at org.postgresql.Driver.connect(Driver.java:260)
at java.sql/java.sql.DriverManager.getConnection(Unknown Source)
at java.sql/java.sql.DriverManager.getConnection(Unknown Source)
at clojure.java.jdbc$get_driver_connection.invokeStatic(jdbc.clj:271)
at clojure.java.jdbc$get_driver_connection.invoke(jdbc.clj:250)
at clojure.java.jdbc$get_connection.invokeStatic(jdbc.clj:411)
at clojure.java.jdbc$get_connection.invoke(jdbc.clj:274)
at clojure.java.jdbc$db_query_with_resultset_STAR_.invokeStatic(jdbc.clj:1111)
at clojure.java.jdbc$db_query_with_resultset_STAR_.invoke(jdbc.clj:1093)
at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1182)
at clojure.java.jdbc$query.invoke(jdbc.clj:1144)
at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1160)
at clojure.java.jdbc$query.invoke(jdbc.clj:1144)
at metabase.driver.sql_jdbc.connection$can_connect_QMARK_.invokeStatic(connection.clj:161)
at metabase.driver.sql_jdbc.connection$can_connect_QMARK_.invoke(connection.clj:156)
at metabase.driver.sql_jdbc$fn__73046.invokeStatic(sql_jdbc.clj:36)
at metabase.driver.sql_jdbc$fn__73046.invoke(sql_jdbc.clj:34)
at clojure.lang.MultiFn.invoke(MultiFn.java:234)
at metabase.driver.util$can_connect_with_details_QMARK_$fn__22394.invoke(util.clj:30)
at metabase.util$do_with_timeout$fn__9213.invoke(util.clj:310)
at clojure.core$binding_conveyor_fn$fn__5754.invoke(core.clj:2030)
at clojure.lang.AFn.call(AFn.java:18)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
06-19 12:57:12 INFO metabase.core :: Metabase Shutting Down ...
06-19 12:57:12 INFO metabase.server :: Shutting Down Embedded Jetty Webserver
06-19 12:57:12 INFO metabase.core :: Metabase Shutdown COMPLETE
You need to ensure that there is a database named metabase
on that postgres instance.
You can either start the postgres container first, and execute the necessary scripts. Or you can programatically do it through some additional config. - Have a look at the Initialization Scripts part of the postgres image - https://hub.docker.com/_/postgres
I stepped into the same problem and started a simple project using docker-compose. It's available for anyone that feels like forking and/or contributing. I also started it for personal use in a project at work, but any improvement is welcomed.
I stepped into the same problem and started a simple project using docker-compose. It's available for anyone that feels like forking and/or contributing. I also started it for personal use in a project at work, but any improvement is welcomed.
This is a great repo! Thanks. Makes Metabase production ready much easier.
version: '3'
services:
metabase:
image: metabase/metabase
ports:
- 3000:3000
environment:
MB_DB_TYPE: postgres
MB_DB_DBNAME: metabase
MB_DB_PORT: 5432
MB_DB_USER: metabase
MB_DB_PASS: metabase
MB_DB_HOST: postgres
postgres:
image: postgres:latest
environment:
POSTGRES_USER: metabase
POSTGRES_DB: metabase
POSTGRES_PASSWORD: metabase
#command: tail -f /etc/fstab
volumes:
- ./pg:/var/lib/postgresql/data
version: '3' services: metabase: image: metabase/metabase ports: - 3000:3000 environment: MB_DB_TYPE: postgres MB_DB_DBNAME: metabase MB_DB_PORT: 5432 MB_DB_USER: metabase MB_DB_PASS: metabase MB_DB_HOST: postgres postgres: image: postgres:latest environment: POSTGRES_USER: metabase POSTGRES_DB: metabase POSTGRES_PASSWORD: metabase #command: tail -f /etc/fstab volumes: - ./pg:/var/lib/postgresql/data
does it work ?
Thank you for this @mattiashem! @renolation it worked like a charm for me.
Yes it work for me as well with postgres 16.0 latest version
did this work for anyone ? i added like below in compose file.
volumes:
- ./metabase-data:/metabase-data
environment:
MB_DB_FILE: /metabase-data/metabase.db
but its creating an empty folder metabase.db. Am i doing something wrong?