63
72

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Python+Flask環境をDockerで構築する

Posted at

概要

Pythonだとvenv コマンドで仮想環境が簡単に構築できてよいのですが、あえてDockerを利用して開発がしたい!となったとき用。

手順

> mkdir 任意のディレクトリ
> cd 任意のディレクトリ
> touch Dockerfile
> touch docker-compose.yml
> mkdir src
> touch src/requirements.txt
> touch src/app.py

requirements.txtファイルをADD してあげないと駄目なのがちょっと面倒ですね。けど、利用するモジュールが増えたときにrequirements.txtファイル利用したいので、悩ましいところ。

Dockerfile
FROM python:3.6

ARG project_dir=/projects/

ADD src/requirements.txt $project_dir

WORKDIR $project_dir

RUN pip install -r requirements.txt

flask run コマンドだとポート指定できるので便利です。

docker-compose.yml
version: '3'

services:
  flask:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - "./src:/projects"
    tty: true
    environment:
      TZ: Asia/Tokyo
    command: flask run --host 0.0.0.0 --port 5000

JSON形式でレスポンスを返します。日本語が含まれる場合は、app.config['JSON_AS_ASCII'] = False するのが良いです。

src/app.py
from flask import Flask, jsonify

app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False

@app.route('/')
def index():
  return jsonify({
    "message": "テスト!!"
  })

if __name__ == '__main__':
  app.run()

Dockerコンテナを起動する

準備ができたらDockerコンテナを起動します。

docker-compose up -d とすると、イメージがない場合はビルドしてくれるので、楽ですね。

docker-compose up -d
()
Building flask
任意のディレクトリ_flask_1 is up-to-date

コンテナに入りたい場合はdocker-compose exec flask bash で入れます。

アクセスできるかホストから確認します。

> curl http://localhost:5000
{"message":"テスト!!"}

やったぜ。

参考

DockerコンテナでFlaskを起動し, JSONデータのPOSTとGET
https://qiita.com/paperlefthand/items/82ab6df4a348f6070a55

63
72
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
63
72

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?