技術雑記帳兼日記帳

AWS、Python、Terraformの使い方をコッソリ

venv + Flask

venv環境でFlask

Python熱が冷めないのでPythonネタを。

dockerで作ったpythonコンテナでvenv環境+flaskを使用して簡単な アプリを起動させるまでをまとめる。
先に言っておくとvenv環境は元の環境を汚さないという意味でとても良い。



前回作成したDocker環境にログインする。

# docker exec -it pythonEnv bash

 

venv

1.venv環境のインストール

#  python -m venv flaskVenv 

2.Activate

# cd flaskVenv 
# source bin/activate

3.flask インストール

# pip install flask

4.pip listの確認

# pip list
~~略
Flask        1.1.2
~~略

Flaskがインストールされている。

ここであえて抜けてみる

# exit
# pip list

当然Flaskがない
デフォルトのPython環境を汚さずにやりたい放題できる。

flask

Docker外で書いたソースをPythonのコンテナに転送する。

1.ソース

ファイル名:server.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello, World'

app.run(host='0.0.0.0', port=80)

2.ソースコピーしてログイン

$ docker cp server.py pythonEnv:/root/
$ docker exec -it pythonEnv bash

3.Activateから起動

# cd /root
# source flaskVenv/bin/activate
# python server.py 
 * Serving Flask app "server" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://0.0.0.0:80/ (Press CTRL+C to quit)

4.動作確認

ブラウザからホストマシンのIPにhttpアクセスすれば「Hello, World」が拝められる。

まとめ

当然ながら、sourceせずに起動するとmoduleがないと怒られる。
また、あたりまえだが動作確認はVMのIPにhttpアクセスしないとみられない。(ハマったのは内緒)