【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. f:id:yukking3:20180706093245p:plain

Flaskのapp.pyに関して

f:id:yukking3:20180706093542p:plain

flaskをインポートする
functionを作る: def create_app(): 通常はこの名前で作る。
10〜13行目は今は無視する。
15行目は、route サーバーをたちあげる。
16行目は、fucntion 短い名前の方がいい。
22行目は、htmlにreturn hello worldを返す
24行目は、appを起動させる


Dockerfileに関して

f:id:yukking3:20180707094137p:plain

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を作り出した。GoogleAndroidなども自分Linuxの一つだ。たくさん種類はあるが、やはり主流となっているグループは「Red Hat系」「Debian系」「Slackware系」の3種類になる。

Linuxには大きく分けて2種類の使い方がある。

普通のパソコンとして使いたい
企業で仕事として利用したい(サーバーとして利用したい)

【目的】普通のパソコンとしてLinuxを使いたい方には、Debian系がオススメ。
【目的】サーバーを建てる場合は、debiancentOSがいいだろう。

なぜcent osではなく、alpineなのか?

Flask Application

$ docker login
$ docker-compose up --build

実際に実行するとlcoalhost8000でhello world が表示される。 f:id:yukking3:20180708081805p:plain

一度builtしたら次からは以下のコマンドでネット環境が作られる。

$ docker-compose up

docker-compose.ymlに関して f:id:yukking3:20180708082159p:plain

どのフォーマットか宣言する。
3行目は、サイトの名前
4行目は、イメージの名前
5行目は、カレントディレクトリを示す
6〜8行目は
9行目は  --reloadはプロダクションの時は消す。 gunicorn -c "python:config.gunicorn" --reload "web_app.app:create_app()"

13行目は、dockerfileの4行目と同じ名前である。
f:id:yukking3:20180708085128p:plain

envファイルには、プロジェクト名をsankeeyeesで設定されている。 f:id:yukking3:20180708083251p:plain

例えば、app.pyを変更すると感知してreloadする。 f:id:yukking3:20180708085419p:plain

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

f:id:yukking3:20181108205754p:plain config.settingsとsettings.pyを見にいけ指示している。 silent=Trueは、このファイルがなくても騒ぐな静かにしろと指示している。

config/setting.py

f:id:yukking3:20180708093816p:plain プロダクションの時は絶対にDebugモードをtrueにしてはいけない。しかし、開発過程では非常有益なものである。 具体的には以下がなくなる。 f:id:yukking3:20181108210310p:plain

setting.py を HELLO = 'hello world?' を追記する。 app.pyを return app.config['HELLO'] に変える。 f:id:yukking3:20180708095059p:plain

まとめ

f:id:yukking3:20180805121914p:plain これだけで動く f:id:yukking3:20180805122048p:plain configフォルダーに空のinit.pyを入れないと動かない f:id:yukking3:20180805122140p:plain snakeeyesフォルダーも同じように空のinit.pyを入れないと動かない