LoginSignup
11
12

More than 3 years have passed since last update.

Metabase+MySQLをdocker-composeで立ち上げる

Last updated at Posted at 2020-06-23

こんばんは、@0yanです。
OSSのBIツール「Metabase」のDockerイメージからコンテナを立ち上げ、ローカルホストのMySQLサーバーに接続しようと思っていたのですが、DockerコンテナからローカルホストのMySQLサーバーに接続するのに苦戦したため方針変更。
docker-composeでMetabaseのDockerイメージとMySQLのDockerイメージから立ち上げることにしました。
本記事はそのやり方をまとめたものです。

環境

  • Windows 10 Pro
  • Docker Desktop for Windows 2.3.0.3
  • PowerShell

構成

ディレクトリの構成は以下のようにしました。

├── db
|   ├── data
|   ├── sql
│   └── my.cnf
|
├── app
│   └── data
|
└── docker-compose.yml

各種ファイルの作成

①docker-compose.yml

MySQLとMetabaseは公式イメージを使用します。

docker-compose.yml
version: '3'

services:

  db:
    image: mysql:5.7
    container_name: mysql-server
    environment: 
      MYSQL_ROOT_PASSWORD: xxxx
      MYSQL_DATABASE: test_db
      MYSQL_USER: user
      MYSQL_PASSWORD: password
      TZ: 'Asia/Tokyo'
    ports:
      - 3306:3306
    volumes:
      - ./db/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./db/data:/var/lib/mysql
      - ./db/sql:/docker-entrypoint-initdb.d

  app:
    image: metabase/metabase:latest
    container_name: metabase
    ports:
      - 3000:3000
    volumes:
      - ./app/data:/mnt/data

②my.cnf

MySQLで日本語を使用したいので、文字コードの設定をしてます。

my.cnf
[mysqld]
character-set-server=utf8

[client]
default-character-set=utf8

コンテナ立ち上げ

docker-compose.ymlがあるディレクトリで以下のコマンドを実行、起動します。

PS > docker-compose up -d
Creating mysql-server ... done
Creating metabase     ... done

PS > docker-compose ps                                                                            Name                 Command             State                 Ports
--------------------------------------------------------------------------------------
metabase       /app/run_metabase.sh          Up      0.0.0.0:3000->3000/tcp
mysql-server   docker-entrypoint.sh mysqld   Up      0.0.0.0:3306->3306/tcp, 33060/tcp

Metabase起動

1分程度待機した後、ブラウザでlocalhost:3000にアクセスすると下の画面が表示されますので「開始しましょう」をクリックします。
image.png

下の画面で管理者情報を登録して「次へ」をクリックします。
image.png

下の画面で「データベースを選択する」をクリックし、MySQLを選択します。
image.png

下の画面が表示されますので、下表の内容を入力します。
image.png

項目          入力内容   
名前           任意の名前 
ホスト          db     
ポート          3306
データベース名      test_db
データベースユーザー名 user
データベースパスワード password

下の画面で「次へ」をクリックします(匿名の情報収集は許容する場合のみオンにしてください)。
image.png

下の画面で「Metabaseを使い始める」をクリックします。
image.png

MySQL接続確認

起動すると下の画面になります。
右上の「照会する」をクリックします。
image.png

下の画面で「ネイティブクエリ」をクリックします。
image.png

下の画面で接続したデータベースの名前(上表でご自身が付けた名前。私はテストデータベースという名前にしました)をクリックします。
image.png

下の画面になりますので、任意のSQL文を入れてみてください。
image.png

なお、複数のSQL文を同時実行はできません(例えば以下のようなSQL文はNGです)。
一文ずつ実行するようにしてください。

create table employee (employee_no integer, employee_name varchar(30));
insert into employee values (1, 'Taro Yamada');
select * from employee;

さいごに

「会社の数字をMetabaseでビジュアル化する」という目標のもと、
- docker
- docker-compose
- MySQL
と学んできましたが、やっと現実化できそうです。
今度はこの内容をEC2上で実行したいと思います。

参考記事

docker-compose でMySQL環境簡単構築

11
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12