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
ブラウザからアクセスできた。
VSCode で indexファイルを修正しても反映された。
「TODO」 → 「TODO 入力」 に修正
参考サイト
ありがとうございました。
https://gray-code.com/blog/flask-on-docker/