背景
Cloud Runで動く簡易的なFlaskアプリが必要だったので構築した時のメモ。
実装
Hello World返すFlaskのDockerイメージを作成する
main.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
python3.9 + Flaskのイメージにする。ポートは80。
Dockerfile
FROM python:3.9
ENV APP_HOME /app
ENV FLASK_APP main
WORKDIR $APP_HOME
COPY . .
RUN pip install -r requirements.txt
CMD flask run --host=0.0.0.0 --port=80
EXPOSE 80
requirements.txt
#
# These requirements were autogenerated by pipenv
# To regenerate from the project's Pipfile, run:
#
# pipenv lock --requirements
#
-i https://pypi.org/simple
click==8.0.3; python_version >= '3.6'
flask==2.0.2
itsdangerous==2.0.1; python_version >= '3.6'
jinja2==3.0.3; python_version >= '3.6'
markupsafe==2.0.1; python_version >= '3.6'
werkzeug==2.0.2; python_version >= '3.6'
イメージをビルドしてGCPにpushする
# ビルド
docker build -t flask_server:tag_name .
# イメージをContainer Registryにpush
docker tag flask_server:tag_name gcr.io/${YOUR_PROJECT}/flask_server:tag_name
docker push gcr.io/${YOUR_PROJECT}/flask_server:tag_name
Cloud Runのコンソールで、pushしたimageを指定してポート80で作成すればおk。