この docker-sql-drill は、「改訂第3版 すらすらと手が動くようになる SQL書き方ドリル」 を Re:dash + Docker で遊べるようにするためのものです。
ネタ元: SQL書き方ドリルのサンプルDBをre:dashで遊べるようにするVagrantfile
- Docker コンテナを起動すればすぐにデータベースがセットアップされている
- Re:dash 上でクエリを実行できる
- データソースに MySQL/PosrgreSQL のいずれかを利用できる
- Docker (docker-compose) 実行環境
- 書籍付属 CD-ROM のデータ、もしくは gihyo のサイトからダウンロードしたデータ
$ git clone https://github.com/5t111111/docker-sql-drill.git
$ cd docker-sql-drill
書籍付属 CD-ROM のデータ、もしくは gihyo のサイトからダウンロードしたしたデータを展開し、リポジトリの直下に SQL_DRILL
というディレクトリがくるように配置してください。
.
├── README.md
├── SQL_DRILL <= これ
├── create_redash_database.sh
├── docker-compose.yml
├── docker-entrypoint-initdb-mysql.d
└── docker-entrypoint-initdb-postgres.d
docker-sql-drill は複数のコンテナから構成されているため docker-compose で起動します。初回は Docker イメージを pull してデータ投入を行うため時間がかかります。
$ docker-compose up
これでコンテナが起動しますが、この時点では Re:dash のシステム用のデータベースが準備されていないため、Re:dash に接続できず、ログにもエラーが出ている状態です。
以下のスクリプトを実行して Re:dash 用のデータベースをセットアップしてください。
$ ./create_redash_database.sh
http://localhost:9001 に接続します。
- Email: admin
- Password: admin
でログインできます。
- メニューの右上の方にあるストレージ型のアイコンをクリック
- 「+ New Data Source」をクリック
- 「Type」に「MySQL」を選択
- 以下を入力
- Name: MySQL (任意なのでなんでもOK)
- Database name: sql_drill
- Host: mysql
- Password: sql_drill
- Port: 3306
- User: sql_drill
- その他空欄のまま
- 「Save」をクリック
- メニューの右上の方にあるストレージ型のアイコンをクリック
- 「+ New Data Source」をクリック
- 「Type」に「PostgreSQL」を選択
- 以下を入力
- Name: PostgreSQL (任意なのでなんでもOK)
- Database name: sql_drill
- Host: postgres
- Password: sql_drill
- Port: 5432
- User: sql_drill
- その他空欄のまま
- 「Save」をクリック
- メニューの「Queries」->「New Query」を選択
- 「Data Source」からデータソースを選択
...後は完全に一般的な Re:dash の使いかたになるための省略します。
- データは docker-compose で定義された volume によって永続化されます
- MySQL/PostgreSQL には外部からのアクセスができないようになっています。必要であれば
docker-compose.yml
を修正し、ポートを公開するようにしてください - PostgreSQL の DB には Re:dash のシステムデータが含まれるため、もし MySQL しかデータソースに使わない場合もデータを消去せず、必ず起動してください
- セキュリティの設定などは適当です。あくまでも書籍の学習用途としてご利用ください
おまけですが、docker-sql-drill
は以下の Docker コンテナから構成されます。
- redash: Re:dash アプリケーション用コンテナ
- postgres: PostgreSQL データソース/Re:dash システムデータ用コンテナ
- mysql: MySQL データソース用コンテナ
- nginx: Web サーバー用コンテナ
- redis: Re:dash で利用する Redis 用コンテナ