【snake】Section: 6 Creating a Base Flask App
Exploring the App's Package Dependencies
requirements.txtを変更するだけ変えることができる。
You can just change the 0.10 to 0.11 in requirements.txt and you’re good to go.
Flaskのapp.pyに関して
flaskをインポートする
functionを作る: def create_app(): 通常はこの名前で作る。
10〜13行目は今は無視する。
15行目は、route サーバーをたちあげる。
16行目は、fucntion 短い名前の方がいい。
22行目は、htmlにreturn hello worldを返す
24行目は、appを起動させる
Dockerfileに関して
1行目は、alpineで動かす。2.7を3.0にするとpythonのバージョンを変えることもできる。
4行目は、pathの設定。今回はsnakeeyes
9−10行目は、自動でrequirementを取得させる。
12行目は、カレントディレクトリをコピーする。
14行目は、bind(結びつけ)させる。最初にローカルサーバーのipadressを8000にする。logfileを平準化させる。create appでapp.pyを動かす。
ここで気になるのはalpineとは何かということ!
そもそもLinuxとは?
Unixを参考に作られたLinuxはオープンソース。そのため、多くの人が自分Linuxを作り出した。GoogleのAndroidなども自分Linuxの一つだ。たくさん種類はあるが、やはり主流となっているグループは「Red Hat系」「Debian系」「Slackware系」の3種類になる。
Linuxには大きく分けて2種類の使い方がある。
普通のパソコンとして使いたい
企業で仕事として利用したい(サーバーとして利用したい)
【目的】普通のパソコンとしてLinuxを使いたい方には、Debian系がオススメ。
【目的】サーバーを建てる場合は、debianかcentOSがいいだろう。
なぜcent osではなく、alpineなのか?
- Alpine Linux は、セキュアで軽量な Linux ディストリビューション
musl libc と BusyBox をベースに構成されている
組込み系に適した Linux ディストリビューション
*パッケージ管理は、APK と呼ばれる独自のシステムを使用
Flask Application
$ docker login $ docker-compose up --build
実際に実行するとlcoalhost8000でhello world が表示される。
一度builtしたら次からは以下のコマンドでネット環境が作られる。
$ docker-compose up
docker-compose.ymlに関して
どのフォーマットか宣言する。
3行目は、サイトの名前
4行目は、イメージの名前
5行目は、カレントディレクトリを示す
6〜8行目は
9行目は --reloadはプロダクションの時は消す。
gunicorn -c "python:config.gunicorn" --reload "web_app.app:create_app()"
13行目は、dockerfileの4行目と同じ名前である。
envファイルには、プロジェクト名をsankeeyeesで設定されている。
例えば、app.pyを変更すると感知してreloadする。
16行目は、'8000:8000'となっている。左がホストで右がdockerである。右を7000に変えると7000でアクセスできる。8000で統一することもできる。
ターミナルでコマンドを実行して、サイト名を確認してみるとsnakeeyes_website となっている。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE snakeeyes_website latest 18e867dcf9b6 28 minutes ago 133MB python 2.7-slim 02ca219cf841 10 days ago 120MB
つぎにdockerをコマンドで確認する。
_1とは、インスタンスを1つ動かしているという意味。
$ docker-compose ps Name Command State Ports --------------------------------------------------------------------- snakeeyes_website_1 gunicorn -b 0.0.0.0:8000 - ... Exit 0
Configuration Settings
config.settingsとsettings.pyを見にいけ指示している。 silent=Trueは、このファイルがなくても騒ぐな静かにしろと指示している。
config/setting.py
プロダクションの時は絶対にDebugモードをtrueにしてはいけない。しかし、開発過程では非常有益なものである。 具体的には以下がなくなる。
setting.py を HELLO = 'hello world?' を追記する。 app.pyを return app.config['HELLO'] に変える。
まとめ
これだけで動く configフォルダーに空のinit.pyを入れないと動かない snakeeyesフォルダーも同じように空のinit.pyを入れないと動かない