PythonとGCPの組み合わせでWebサイトを作る【「本棚自慢」サイト開発日誌#1】


経緯

業務でPythonとGCPの知識が必要になるのでチュートリアルなどしてみたものの、結局は実戦(実際に動くものを本番(=インターネット上へ)リリースする)が一番力がつくので、やってみることにする。
業務では、GolangやAngularも必要そうだけど、Golangは2年くらい業務経験あるので優先度下げる。
Angularはチュートリアルを多少やったものの、機能が多く、Python、GCPの勉強と同時並行が難しそうなので、ある程度、Python+GCPの開発が軌道に乗った後でトライする。

環境

  • 開発端末:Linux(Ubuntu 17.10)
  • 言語:Python(v3.6.3)※ pip は v9.0.1
  • フレームワーク:Flask(v1.0.2)

<前提>

  • GCPはアカウント取得済み。
  • Google Cloud SDK取得・認証済み。

今日のお題

  • Webサイトの題材を決める。
  • Python3で単純にWebページ表示するくらいやってみる。
  • GCP上(GAE)にデプロイしてみる。

■Webサイトの題材を決める。

前々から「いろんなエンジニアの本棚が見てみたい」と思っていたので、Webサイト名は「本棚自慢」。
ちゃんと検討・設計してから作るというより、とりあえず作って少しずつ拡張・改善。

自分の本棚の写真を撮って投稿してもらう。そしてそれを一覧に表示する。
まずはそれまでを当面の目標にする。

■Python3で単純にWebページ表示するくらいやってみる。

以下ソースで実施済み。
https://github.com/sky0621/bicherregal-py/tree/4690e65ae98b243ac38db257466326a711861384

【参考】
 http://flask.pocoo.org/docs/1.0/

■GCP上(GAE)にデプロイしてみる。

↓のようなYAMLを用意(Pythonプロジェクト直下)すると、作ったPythonのWebアプリがGAE上で起動してくれる。


runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app

runtime_config:
  python_version: 3

上記YAMLが存在するパスで以下実行すると、GCP上にデプロイされる。


$ gcloud app deploy
Services to deploy:
      〜
Do you want to continue (Y/n)?  y
      〜
  けっこう時間がかかる
      〜
DONE
      〜

デプロイ結果の確認。


$ gcloud app browse

★「xxxxxxxx」の部分には、自分のGCPプロジェクトのIDが入る。

【参考】
 https://cloud.google.com/appengine/docs/flexible/python/configuring-your-app-with-app-yaml?authuser=1&hl=ja
 https://cloud.google.com/appengine/docs/flexible/python/quickstart?authuser=1&hl=ja