2
2

More than 1 year has passed since last update.

【Docker】Flask 開発環境構築の流れ

Last updated at Posted at 2023-05-07

Docker 環境構築の流れ

備忘録として。
エラー出たところは一言メモを入れている。

外部ライブラリの書き出し

pip freeze > requirements.txt

ディレクトリ構成

yuutanoMacBook-Pro todoapp % ls
Dockerfile              app.py                  init_todos.py           migrations              static
__pycache__             data.sqlite             init_user.py            requirements.txt        templates

Dockerfile

FROM python:3.10.10-alpine だと、docker build でエラーになった。
requirements.txt をインストールの箇所で失敗していた。

FROM python:3.10.10

WORKDIR /ToDoApp

COPY . /ToDoApp

RUN pip install -r requirements.txt

CMD ["python", "app.py"]

docker build (イメージの作成)

-t オプションの後に、「ToDoApp」にしたらエラーになった。

docker build --platform amd64 -t flask:v1 .
yuutanoMacBook-Pro todoapp % docker images                             
REPOSITORY        TAG              IMAGE ID       CREATED         SIZE
flask             latest           6606d8c501e3   5 minutes ago   1.15GB

app.py の修正

ホストを"0.0.0.0"にしないとブラウザからアクセスできない。

if __name__ == "__main__":
    # app.run(debug=True)
    app.run(host="0.0.0.0", port=80, debug=True)

docker run (コンテナの立ち上げ)

docker run -p 5001:80 -v ${PWD}:/ToDoApp -d flask:v1

DockerfileのCOPYにToDoAppディレクトリごとコピーするよう修正したので、
上記のコマンドは、以下に修正(ボリュームマウントは無し)

docker run -p 5001:80 -d flask:v1
yuutanoMacBook-Pro todoapp % docker images                             
REPOSITORY        TAG              IMAGE ID       CREATED         SIZE
flask             latest           6606d8c501e3   5 minutes ago   1.15GB

docker exec (コンテナにログイン)

bash じゃなくて、sh にしたらログインできた。

docker exec -it 4847a95f7921 sh 
# python -V
Python 3.10.10
# ls
Dockerfile  __pycache__  app.py  data.sqlite  init_todos.py  init_user.py  migrations  requirements.txt  static  templates

ブラウザからアクセスできた。
image.png
VSCode で indexファイルを修正しても反映された。
「TODO」 → 「TODO 入力」 に修正
image.png

参考サイト

ありがとうございました。
https://gray-code.com/blog/flask-on-docker/

2
2
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
2
2