$30 off During Our Annual Pro Sale. View Details »

Dockerを使った可視化環境の作り方

Masa
March 24, 2019

 Dockerを使った可視化環境の作り方

Event:
- 2019/03/24 はんなりPython+PyData Osakaの可視化特集 https://goo.gl/dT1Dz3
Repository: https://git.io/fjJvi

Masa

March 24, 2019
Tweet

More Decks by Masa

Other Decks in Programming

Transcript

  1. Dockerを使った可
    視化環境の作り方
    はんなりPython+PyData Osakaの可
    視化特集
    2019/03/24
    @masayuki14

    View Slide

  2. Masaといいます
    もりさきまさゆき
    @masayuki14
    プロ主夫
    フリーランス (パートタイム)

    ソフトウェアエンジニア

    データベーススペシャリスト

    View Slide

  3. このアイコン
    Follow me !!

    View Slide

  4. 自己紹介
    コミュニティ
    はんなりPython (第3金曜開催@京都)

    OSS Gate (京都, 大阪, 東京)

    スプーキーズアンバサダー

    View Slide

  5. スプーキーズ@京都
    ボードゲーム制作
    Web系システム
    ソーシャルゲーム開発
    Webエンジニア積極採用中!!

    View Slide

  6. スプーキーズ@京都
    もくもく会 モクモクモック
    2019/03/28
    モクモクモック(末木会)#6

    勉強会 テクテクテック
    2019/04/10
    テクテクテック #8 サーバ監視や負荷
    テストどうやってるの?

    View Slide

  7. Dockerを
    使った可視化
    環境の作り方

    View Slide

  8. Dockerを使った可視化環境
    の作り方
    Docker環境までの道のり
    1.
    Docker環境の紹介
    2.

    View Slide

  9. Dockerを使った可視化環境
    の作り方
    Docker環境までの道のり
    1.
    Docker環境の紹介
    2.

    View Slide

  10. Docker環境までの道のり
    可視化アプリをつくろう!!
    困ったことがたくさん
    できることから少しずつ
    Dockerで開発環境ができてた

    View Slide

  11. 可視化アプリを作ろう!
    ハンズオンでDash
    簡単にできそう
    興味のあるデータがない
    懇親会でわいわい
    アイデアが降りてきた

    View Slide

  12. 遊園地の待ち
    時間を可視化
    しよう!

    View Slide

  13. USJ!
    TDL!
    TDS!

    View Slide

  14. 可視化アプリを作ろう!
    というわけで
    待ち時間可視化アプリの
    開発を始めるが・・・。

    View Slide

  15. Python
    難しい

    View Slide

  16. 困ること
    多すぎ

    View Slide

  17. ところでぼくの基本スペック
    プログラミング
    10年以上

    Pythonコミュニティ
    1年ちょっと

    Python
    3ヶ月

    View Slide

  18. 困ったこがたくさん
    環境どうしよう
    MacのプリインストールPython

    Dashのためのライブラリ

    PC汚したくない

    pyenv venv わからん

    View Slide

  19. 困ったこがたくさん
    Python慣れてない
    やりたいことがすぐできないストレス

    ライブラリ知らない

    書きながら動かしたい

    View Slide

  20. 困ったこがたくさん
    Pandas慣れてない
    CSVはあるけど目的の形にできない

    データ操作のストレスが爆発

    処理が重い

    データだけみたい時こまる

    View Slide

  21. 困ったこがたくさん
    PC2台
    デスクトップ

    ラップトップ

    環境揃えたい

    View Slide

  22. なんとか
    ならんか

    View Slide

  23. 近道は
    ない

    View Slide

  24. こつこつ
    やるしか
    ない

    View Slide

  25. できることから少しずつ
    環境どうしよう
    Docker使おう!!

    使い捨てでいいや

    バージョンとか気にしなくていい

    PC汚れない

    View Slide

  26. できることから少しずつ
    Python慣れてない
    JupyterNotebook!!

    書いて動かすを繰り返す

    試行錯誤を保存

    View Slide

  27. できることから少しずつ
    Pandasなれてない
    MySQLでやる!!

    慣れてる

    Pandasは最低限

    そのうち慣れるやろう

    View Slide

  28. できることから少しずつ
    PC2台
    docker-compose.yml

    Infra as a code

    宣言的な記述で管理

    リポジトリで共有

    View Slide

  29. 基本にある考え
    ゴール重視
    可視化アプリが動くこと

    できること重視
    Pandas覚えたいわけじゃない

    射撃しつつ前進
    Joel on Software 読んでくれ

    View Slide

  30. Joel on Software

    View Slide

  31. こつこつ
    進めた結

    View Slide

  32. Docker環
    境のでき
    あがり

    View Slide

  33. Dockerを使った可視化環境
    の作り方
    Docker環境までの道のり
    1.
    Docker環境の紹介
    2.

    View Slide

  34. Dockerとは
    引用元: https://knowledge.sakura.ad.jp/13265/

    View Slide

  35. Dockerとは
    こんな図でわかるわけない
    仮想環境とかよくわからん
    つよい人の理論
    Windowsつらい

    View Slide

  36. Dockerとは (雑な解説)
    コンピュータの中に箱を用意
    必要なものを詰め込む
    いい感じにつかう
    はんなりPythonに来て
    たまに使うから

    View Slide

  37. できあがったDocker環境
    +--------+ +-------+ +---------+
    | | | | | |
    | Dash | ----- | MySQL | ------ | Jupyter |
    | | | | | |
    +--------+ +-------+ +---------+
    |
    | +---------+
    | | |
    +----------- | adminer |
    | |
    +---------+

    View Slide

  38. Dockerfle
    FROM python:3.7
    # for dash
    RUN pip install dash==0.36.0
    RUN pip install dash-html-components==0.13.5
    RUN pip install dash-core-components==0.43.0
    RUN pip install dash-table==3.1.11
    RUN pip install dash-daq==0.1.0
    RUN pip install pandas
    RUN pip install mysql-connector-python==8.0.15
    RUN export LANG=ja_JP.UTF-8

    View Slide

  39. docker-compose.yml
    version: '3.7'
    services:
    dash:
    build:
    context: ./dockerfiles
    dockerfile: Dockerfile.dash
    command: ["python", "/work/dash/app.py"]
    working_dir: /work
    depends_on:
    - db
    volumes:
    - ./:/work
    - ./logwh:/log
    ports:
    - 8050:8050

    View Slide

  40. docker-compose.yml
    db:
    image: mysql:8.0
    command:
    - --default-authentication-plugin=mysql_native_password
    - --secure-file-priv=/log
    restart: always
    environment:
    MYSQL_ROOT_PASSWORD: root
    MYSQ_DATABASE: pydata
    ports:
    - 3306:3306
    working_dir: /work
    volumes:
    - ./db/mysql/datadir:/var/lib/mysql
    - ./db/mysql/log:/var/log/mysql

    View Slide

  41. Infra as a Code
    Dockerfle
    docker-compose.yml
    etc…
    環境を再現しやすくなる

    View Slide

  42. Demo
    https://git.io/fjJvi

    View Slide

  43. まとめ
    Dockerを使って問題解決!
    可視化関係なかった!
    はんなりPython来てね

    View Slide

  44. ありがと
    うござい
    ました

    View Slide