BETA

DataVのパッケージ開発環境をDockerで準備する

投稿日:2019-05-14
最終更新:2019-05-14

DataVのパッケージ開発環境をDockerで準備する

DataVとは

AlibabaCloudが提供するリアルタイムデータ可視化サービス。
大量のデータを簡単にグラフやマップなどの視覚情報として表示できる。
無料でも上限までならプロジェクトを作成できる。
用意されている可視化用のパッケージは少ないので、欲しいグラフは自作することも可能。
ただし、パッケージを自作できる開発者版は有料。

パッケージについて

パッケージ開発にはNode.jsを使う。
パッケージの初期化まではドキュメントに沿ってコマンドを打つだけで良いので導入は簡単。
だが、対応しているnode.jsやnpmのバージョンが最新ではない。
そのままローカルにインストールすると後々の管理が面倒そうだったので、Dockerで環境を用意することにした。

Dockerfile

FROM node:10.11.0-alpine  

RUN set -x && \  
npm cache clean --force && \  
npm install -g [email protected] && \  
npm install --registry=https://registry.npm.taobao.org datav-cli -g  

WORKDIR /app  

ENTRYPOINT ["datav"]  
CMD ["init"]  

対応バージョンのnpmとDataVのCLIをインストールするだけのシンプルな作り。
alpineではビルド時にnpm installでERRORが発生したため、npm cache clean --forceで強制的にERROR原因とおぼしきキャッシュを削除している。
通常のnode imageを使う場合はこの記述は不要だが、イメージサイズが4倍に膨れあがるので注意。
ENTRYPOINTに["datav"]を指定してコンテナの役割をDataV専用に固定。
CMDの["init"]は初期値。実行時の引数で上書き可能。

docker-compose.yml

version '3'  
services:  
  datav:  
    build: .  
    ports:  
      - '1111:1111'  
    volumes:  
      - ./app:app  
    tty: true  
    stdin_open: true  

datav initでパッケージを作成するディレクトリをホストのディレクトリにマウントしたい関係上、docker-composeを使うことになった。
volumesによって、initされたパッケージはDockerfileと同じ階層にあるappディレクトリの下に作られる。
portsではdatav run実行時にlocalhost:1111にアクセスしてパッケージの状態を確認できるようにするためにホストとコンテナのポートを繋いでいる。
ttyとstdin_openは、パッケージ初期化時にパッケージ名など複数の入力が発生するため両方trueにしている。

初期化

docker-compose build  

docker-compose run  

docker-compose runでコンテナの起動後datav initが実行される。

パッケージの状態確認

docker-compose run --service-ports datav run [package_name]  

docker-compose runではymlに記載したポートがマウントされないため、--service-portsオプションでマウントするように指定する。
datavはymlに記載したサービス名。run [package_name]を引数として、コンテナ起動後にCMDを上書きし、datav run [package_name]が実行される。
実行後、ホストのディレクトリからlocalhost:1111にアクセスすることで、パッケージの状態が確認できる。

課題

  • datav localeでCLIの言語変更が可能だが、どう永続化するか
  • 同様に、datav loginでAlibabaへのログイン状態をどう永続化するか
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@showyleeの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!