Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

こんばんは、@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環境簡単構築

0yan
都内のICT企業で人事兼業務自動化・効率化担当してます。10月から経営企画として社内のDX推進を担当する予定です。【PyPI】https://pypi.org/project/lineworks/ 【GitHub】http://github.com/0yan
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away