最近Dockerとか触ってみてるので開発環境作ったり運用環境を作ったりといったところで
連載したいと思います。
こんな感じで。
今回はこちら → #01. Flaskアプリをdocker上で動かしてみる
#02. vscodeのRemote Developmentでデバッグしてみる
#03. 運用環境を構築してみる
まずはDocker上にPythonやらFlaskやらをインストールし、
ソースを置いて実行してホストPCからアクセスしてみる。
環境
・ macOS Catalina 10.15.6
・ VSCode 1.48
・ Docker 19.03.12
・ Docker Compose 1.26.2
ディレクトリ構成
flask_hello_world
├── docker-compose.yml
├── Dockerfile
├── requirements.txt
└── run.py
ソースコードはGithubにあげてます。
Dockerfile
Python公式のイメージからDockerイメージを作成します。
# base image
FROM python:3.8.5
ARG project_dir=/work/
# workdir にファイル等追加
ADD run.py $project_dir
ADD requirements.txt $project_dir
# workdir
# なければ新規作成
WORKDIR $project_dir
# upgrade pip
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
# port
EXPOSE 5000
ENV PYTHONPATH "${PYTHONPATH}:/code/"
ENV FLASK_APP "/run.py"
docker-compose.yml
こちらはDockerイメージのビルド情報やコンテナ起動時の情報などを
定義するファイルです。
version: '3'
services:
web:
container_name: hello_flask
build: .
ports:
- "5000:5000"
tty: true
environment:
TZ: Asia/Tokyo
command: flask run --host 0.0.0.0 --port 5000
requirements.txt
インストールしたいパッケージやバージョンを指定します。
flask
# バージョンまで指定する場合
# flask == 1.1.2
pip freeze
で現在の環境にインストールされたパッケージとバージョンを確認することができます。
よって下記を実行してそのままファイルへ書き出し。
$ pip freeze > requirements.txt
run.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "Hello Flask!"
@app.route("/hello/<name>")
def hello_someone(name):
return "Hello " + name + " !"
コンテナを起動
下記コマンドでコンテナを起動します。
$ docker-compose up -d
動作確認
コンテナが起動すればブラウザから下記にアクセスするだけです。
http://localhost:5000
http://localhost:5000/hello/{name}
※ {name} の部分はご自由に置き換えてください。
コンテナを停止
コンテナを停止する際は下記コマンドを実行してください。コンテナの起動や停止はDocker Desktopから行ってもOKです。
$ docker-compose stop
うん、とりあえず動きましたね。
次回は開発環境としてソースなどをコンテナにのせて
デバッグ実行できるようにしたいと思います。
以上、もりもりでした。
0 件のコメント:
コメントを投稿