0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TableauとTabPyことはじめ~Dockernizeしてみる~

Last updated at Posted at 2024-10-02

目的

DataSaberになるための奮闘記です。
この記事は、次のシリーズ3つ目の記事となります。

  1. TabPy とTableauを接続してみる
  2. TabPyとTableauで機械学習してみる
  3. TabPyをDockernizeしてみる ← これ!

前回、TabPyサーバに機械学習モデルをデプロイしました。
今回はその環境をDockernizeします。

Dockernizeすることでコード化された環境をチームやメンバに共有可能になり、再現性と再利用性が高まるメリットがあります。

動作環境

DockerおよびDocker composeのバージョンは以下の通りです。
その他の動作環境は前回と同様です。

$ docker --version
Docker version 27.2.1, build 9e34c9b

$ docker-compose -v
docker-compose version 1.27.4, build 40524192

ファイルを作成する

1. Dockerfileを作る

python3.8をベースに必要なライブラリをインストールします。
ライブラリのバージョンを固定するならrequirement.txtを作成してもよいですね。

FROM python:3.8.10
RUN python3 -m pip install --upgrade pip
RUN pip install tabpy
RUN pip install tabpy_client
RUN pip install pandas
RUN pip install numpy
RUN pip install scikit-learn

2. docker-composeファイルを作成する

version: '3.8'
services:
  tabpy-service:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "9004:9004"
    volumes:
      - ./script/:/app
    command: /bin/bash -c "tabpy --disable-auth-warning & sleep 5 && python3 /app/tabpy_deploy_ml_model_titanic.py && tail -f /dev/null"

次の手順となっています。

  1. Dockerファイルからイメージを作成する
  2. ポート9004を開放する
  3. ローカルの./script配下をコンテナ内の/app配下にマウントする
    • 前回の記事で作成した”tabpy_deploy_ml_model_titanic.py”を./scriptに格納しておく
  4. commandブロックについて
    1. "sleep 5" はTabPyサーバが起動完了するまでの待ち時間
    2. TabPyサーバの起動とカスタム関数を実行

POINT

commandブロックの内容を実行後にコンテナが停止します。
そのため、下記コマンドを実行させることで、コンテナの起動を維持します。

tail -f /dev/null

同様の効果があると思われる次のオプションではコンテナが自動的に停止してしまった。
原因調査は別途したいと思います。

tty: true
stdin_open: true

イメージの作成とコンテナ起動

次のコマンドでDockerイメージのビルドとコンテナが起動されます。

$ docker-compose up --build -d

結果

起動確認後、Tableauの分析拡張機能の接続の管理から接続テストを行うと、正常にコンテナ内に立ち上げたTabPyサーバと接続できていることがわかります。
{667B9ACC-703F-424E-B802-C93BB09874EA}.png

最後に

Tableau-TabPyと戯れる3つのシリーズはいかがでしたでしょうか。
個人的には長らく利用してみたかったライブラリを扱えたため、記事を執筆しながらとても勉強になりました。
Tableauでのヴィジュアライズを支える技術について、より知識を深めていきたいと心を新たにしました。

スペシャルサンクス

本記事を執筆するにあたり次のサイトを参考にさせていただきました!ありがとうございました。
https://note.com/uni_3/n/n852cd8c43c4b
https://tableaujpn.blogspot.com/2020/03/tableaupythontabpydocker.html

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?