以前、”かめ れおん“さんの”米国AI開発者がゼロから教えるDocker講座“を参考に、
DockerでRailsを使ったWebアプリ開発環境構築をしてみました。
👇記事はこちら
今回は僕自身とても興味を持っていて、絶対にやりたいと思っていた内容になります。
Webアプリ開発のフレームワークであり、機械学習との相性も良いPythonで書くことが出来る”Django“の開発環境を“Docker” & “docker-compose“を使って構築していきます✨
以前のRialsでやったことと大きくは変わりませんし、難しいことはしません。
なるべく分かりやすい書いていきたいと思います、では早速やっていこう!
Dockerfileの作成
✅コンテナの基盤となるimageをNVIDIA NGCからPullする(3行目)
✅opencvを使いたい方はインストール(9行目)
✅Djangoに必要なライブラリのインストール(13行目)
✅機械学習をする方はライブラリのインストール(17行目)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<Dockerfile # django_tutorial/フォルダ直下に作成> # JetPack4.4.1に対応したDocker imageをNVIDIA NGCからPullしたもの FROM nvcr.io/nvidia/tensorflow:20.02-tf2-py3 # インタラクティブな設定=False(=入力待ちでブロックしなくなる)自動インストールの際には便利 ARG DEBIAN_FRONTEND=noninteractive # UniCode Error対策 ENV LANG en_US.UTF-8 RUN apt-get update && apt-get -y upgrade && \ apt-get install -y --no-install-recommends # opencv使う方は必要なパッケージをinstall RUN apt-get install -y libgtk2.0-dev libsm6 libxext6 libxrender1 libglib2.0-0 libfreetype6-dev libxft-dev && \ apt-get install -y python3-opencv # Django install RUN python3 -m pip install -U --upgrade pip RUN pip3 install django django-bootstrap4 django-mathfilters # 機械学習やる方は下記を随時更新 RUN pip3 install --default-timeout=3000 sklearn pandas pillow matplotlib # Docker環境の時刻を日本に設定 RUN cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \ echo "Asia/Tokyo" > /etc/timezone WORKDIR /work/ CMD ["/bin/bash"] |
docker-compose.ymlの作成
今回は最小限で書きました。docker-compose upコマンドで”python3 manage.py runserver 0.0.0.0:8000″が走るように記述しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<docker-compose.yml # django_tutorial/フォルダ直下に作成> # docker-compose version version: '3' services: # Django application web: build: . volumes: - ./:/work/ network_mode: "host" environment: - DISPLAY=$DISPLAY privileged: true tty: true stdin_open: true command: ./django_tutorial/python3 manage.py runserver 0.0.0.0:8000 |
・version: “3” ⇨ docker-composeのバージョン指定
・build: . ⇨Dockerfileのディレクトリ指定
・volumes: <hostPC dir>:<docker dir> ⇨フォルダのマウント指定
・network_mode: “host” ⇨ ホストのネットワークに対してポート番号をexpose、マッピング無しでアクセス可能(–netコマンドと同等※Linux環境限定)
・privileged: true ⇨–privilegedと同等(ホスト上のプロセスと同じレベルでホストへのアクセスを許可するように、ホストの全てのデバイスへのアクセス可能)
・tty: true ⇨ docker-compose upプロセスの起動状態を保持(-tと同等)
・stdin_open: true ⇨標準入出力とエラー出力をコンテナに結びつける設定(-iと同等)
docker-composeコマンドで環境を立ち上げる
先程作ったDockerfileとdocker-compose.ymlファイルを使って環境構築に進んで行きたいと思います!続きは別の記事に書いたので、こちらを見ながら進めてみて下さい⭕
👇こちらの記事全体になります
いかがだったでしょうか?
この記事を見ている方一人一人の求める開発環境は把握することはできないので、この記事をベースに自分なりのオリジナルの環境構築にチャレンジしてみて下さい。
次はDjangoアプリを起動させながら、Webカメラで撮影し、画像認識を使って判別した結果をI/Fに表示させるなど少し規模の大きいことしたい時、Dockerを使ってどのように環境構築して行けばいいのかを記事にできたらと思います。楽しみにしてて下さい😎
また、Djangoの勉強をしていきたい方向けに基礎の基礎を学べる記事を書いているので、よかったら参考にしてみて下さい👇
今回はこの辺で、ばいばい👋
コメントを残す