概要
今更ながら簡単にdocker触ってみました。ローカルで試しに作るときはVirtualenvを使っていましたがコンテナ化もしてみたく。
dockerをローカルで動かすところまで記載したいと思います。
Virtualenvについてはこちら↓
yunabe.hatenablog.com
はじめに
公式にDockerfile のベストプラクティスというのがあったので読んで見る
ちゃんと日本語である(すごい)
Dockerfile のベストプラクティス — Docker-docs-ja 1.9.0b ドキュメント
色々ありますがこの辺は特に気をつけようと思ったもの、たぶん見なかったら守れてなかった。
・コンテナ毎に1つのプロセスだけ実行
・レイヤの数を最小に
・複数行の引数
ディレクトリ構成
ベストプラクティスを読んで構成を以下のようにしてみました。
├─ README.md | └─ APP └─ dockerfile └─ main.py └─ requirements.txt └─ env.txt
ちなみにディレクトリ構成を書く線は"罫線"と打つと出てきます 。でも綺麗に見えてない...あとで調べて見よう。
dockerfile
# ベースイメージは今回Pythonのみを仕様 FROM python:3.7 # よく使うためソースファイルを置くディレクトリを環境変数に代入 ARG project_dir=/app/ # ソースとインストールモジュールをまとめた必要ファイルをコンテナにコピー ADD requirements.txt $project_dir ADD main.py $project_dir # パッケージ&変数読み込み WORKDIR $project_dir RUN pip install --upgrade pip RUN pip install -r requirements.txt # コンテナ起動 CMD ["python", "main.py"]
env.txt
環境変数を別ファイルにまとめる。今回イメージに焼くのではなくコンテナに渡す形とします
AAAA=xxxx BBBB=yyyy CCCC=zzzz
docker imageを作成
flask-appという名前でimageを作成します
docker build -t flask-app .
Dockerをenv fileを読み込んで起動
docker run --env-file=env.txt -p 443:443 -it flask-app
※ -itd にするとデーモン化されます
確認
https://localhost にcurlをすることでflaskが動いていることが確認できれば完了です。