Help us understand the problem. What is going on with this article?

MetabaseとMySQL環境をDockerで作る

はじめに

株価などネットから取得したデータをMySQLに格納し、
それを可視化したかったのでMetabsaeを試してみました。

環境作成にあたり、Dockerを利用しています。

環境

  • Mac OS X 10.14.2
  • Docker version 18.09.0
  • docker-compose version 1.23.2

参考

今回やりたい構成

Metabase_MySQL.png

ディレクトリ構成

.
├── Data
│   └── mysql_data
└── Docker
    └── docker-compose.yml

永続化のためmysql_dataにMySQLのファイルを置きます。

環境作成

イメージがないこと確認

$ docker-compose images
Container   Repository   Tag   Image Id   Size
----------------------------------------------

docker compose用のファイル準備

docker-compose.ymlでみて欲しいところは以下

  • linksにmysqlと記載することで、Docker内はmysqlで名前解決できる。

  • volumesにローカルのファイルをDockerコンテナにマウントする設定を記載することによってMySQLのデータをローカルに保存している。その結果データを永続化できる。

docker-compose.yml
version: "3"
services:
  metabase:
    container_name: metabase
    image: metabase/metabase
    ports:
      - "3000:3000"
    links:
      - mysql
  mysql:
    container_name: mysql
    image: mysql:5.7.22
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: stock
      MYSQL_USER: stock
      MYSQL_PASSWORD: stock
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - ../Data/mysql_data/:/var/lib/mysql

イメージを取得

$ docker-compose create
WARNING: The create command is deprecated. Use the up command with the --no-start flag instead.
Pulling mysql (mysql:5.7.22)...
5.7.22: Pulling from library/mysql
be8881be8156: Pull complete
c3995dabd1d7: Pull complete
9931fdda3586: Pull complete
bb1b6b6eff6a: Pull complete
a65f125fa718: Pull complete
2d9f8dd09be2: Pull complete
37b912cb2afe: Pull complete
79592d21cb7f: Pull complete
00bfe968d82d: Pull complete
79cf546d4770: Pull complete
2b3c2e6bacee: Pull complete
Pulling metabase (metabase/metabase:)...
latest: Pulling from metabase/metabase
4fe2ade4980c: Already exists
6fc58a8d4ae4: Pull complete
819f4a45746c: Pull complete
cfead1870569: Pull complete
80eef12953dc: Pull complete
8ea161a68113: Pull complete
db7c1ab963fb: Pull complete
Creating mysql ... done
Creating metabase ... done

$ docker-compose images
Container      Repository        Tag       Image Id      Size
--------------------------------------------------------------
metabase    metabase/metabase   latest   0e41d8de8452   221 MB
mysql       mysql               5.7.22   6bb891430fb6   355 MB

起動

$ docker-compose up -d
Starting mysql ... done
Starting metabase ... done

-dをつけてデタッチドモードにしないと、ターミナルに戻ってこれない。

動作確認(MySQL)

$ mysql --host=127.0.0.1 --user=stock --password
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.22 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| stock              |
+--------------------+
2 rows in set (0.02 sec)

データ格納

Pythonで株価情報を取得して、MySQLに格納する
で作ったPythonコードでMySQLにデータを格納しています。

Metabaseの設定

初期セットアップ

http://localhost:3000/setup

にアクセス

ss_Metabase_01.png

ss_Metabase_02.png

ss_Metabase_03.png

docker-compose.ymlのlinksに記載したmysqlがホスト名

ss_Metabase_05.png

ss_Metabase_06.png

ss_Metabase_07.png

今回は事前にデータをMySQLに表を作成していたので、MySQLに入っている表の一覧が表示される。

ss_Metabase_08.png

表の名前をクリックすると、勝手にSummaryしている。

ss_Metabase_09.png

もちろん表のデータから色々なグラフ(円グラフや棒グラフ、線グラフ)などをSQLからも作成可能。

ss_Metabase_10.png

おまけ

停止

$ docker-compose stop
Stopping metabase ... done
Stopping mysql    ... done

起動(環境削除していない場合)

$ docker-compose start
Starting mysql    ... done
Starting metabase ... done

環境削除

コンテナを停止し、そのコンテナとネットワークを削除

$ docker-compose down
$ docker-compose down
Stopping metabase ... done
Stopping mysql    ... done
Removing metabase ... done
Removing mysql    ... done
Removing network docker_default

環境削除(imageも削除)

上に加えて、imageも削除

$ docker-compose down --rmi all
Removing metabase ... done
Removing mysql    ... done
Removing network docker_default
Removing image mysql:5.7.22
Removing image metabase/metabase
Why do not you register as a user and use Qiita more conveniently?
  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
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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