Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

概要

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした