Metabase, is an application that connects to a existing database allowing you to run analytics and create charts from their web application.

One of the great things about Metabase is that you can self-host it! Today, we’re specifically looking at the Running Metabase on Docker instructions.

Following the guide, I run Metabase as prescribed and load a small SQLite database:

docker run --rm -p 8080:3000 -v $PWD/data/settings.db:/opt/data.db metabase/metabase

Since it’s a SQLite database, the container needs to have physical access to the file

The Metabase application starts on http://localhost:8080 and I am able to begin with the setup. However, as soon as I submit the initial form, Metabase crashes.

01-01 20:59:28 DEBUG analyze.fingerprint :: Saving fingerprint for Field 55 'name'
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x000000000000a786, pid=1, tid=0x00007f8984a4cae8
#
# JRE version: OpenJDK Runtime Environment (8.0_181-b13) (build 1.8.0_181-b13)
# Java VM: OpenJDK 64-Bit Server VM (25.181-b13 mixed mode linux-amd64 compressed oops)
# Derivative: IcedTea 3.9.0
# Distribution: Custom build (Tue Oct 23 11:27:22 UTC 2018)
# Problematic frame:
# C  0x000000000000a786
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /tmp/hs_err_pid1.log
#
# If you would like to submit a bug report, please include
# instructions on how to reproduce the bug and visit:
#   http://icedtea.classpath.org/bugzilla
#

But we can’t stop there!

At a first glance, I didn’t know what the issue could be, but I got curious as to how this image was built, so I checked out the Github repo. I noticed that the base image used to run Metabase is Alpine based, openjdk:8-jre-alpine. So that could be the issue!

I came up with this minimal Dockerfile:

FROM openjdk:8-jre-slim

ENV VERSION 0.31.2

WORKDIR /app

ADD https://raw.githubusercontent.com/metabase/metabase/v$VERSION/bin/start /app/bin/
ADD https://downloads.metabase.com/v$VERSION/metabase.jar /app/target/uberjar/

CMD ["bash", "/app/bin/start"]

And it worked!!!

So now the full command to use this image would be:

docker build -t metabase/metabase:v0.31.2-custom -f Dockerfile .
docker run --rm -p 8080:3000 -v $PWD/data/settings.db:/opt/data.db metabase/metabase:v0.31.2-custom

This should get give you a Metabase instance that’s able to load your SQLite database, I’m currently running that on my server with no issues. If you find a better way to go about this, I’m all ears!

I searched the Github Issues for anything related to this, but there’s only one result that’s not this problem, so this could be an issue with my configuration alone.