0
3

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.

Pipenvで管理しているFlaskアプリをDockerコンテナ上で動かす

Posted at

僕はPipenvを愛用しているのですが,あんまりPipenvを使っている記事を見ないので普及のための記事です.今回は,「FlaskアプリをDockerコンテナ上で動かす」というありふれたというか今更?な題材を扱おうと思います.

ディレクトリ構成は以下を想定.以後, project_name/にいるものとします.

project_name/
  Dockerfile
  uwsgi.ini
  app/
    __init__.py
    app.py

例のごとく,アプリケーションサーバとして, uwsgiを使います.設定は例えば以下.

./uwsgi.ini
[uwsgi]
wsgi-file = app/app.py
callable = app
processess = 1

# for development
http = 0.0.0.0:5000
py-autoreload = 1

./app/app.pyにはFlaskインスタンスを置いてください.僕は, ./app/__init__.pycreate_app関数を定義して, ./app/app.pyで呼んでます.Factory patternと言うんですかね?テスト時とかに便利らしい.

さて, ./Dockerfileは以下のようにします.

./Dockerfile
FROM python:3.6.5-slim-stretch

RUN apt-get update && apt-get install -y build-essential

RUN pip install pipenv
ENV PIPENV_VENV_IN_PROJECT=1

WORKDIR /usr/local/app

COPY ./Pipfile .
COPY ./Pipfile.lock .
RUN pipenv install

ENV FLASK_ENV=production
COPY ./uwsgi.ini .
CMD ["pipenv", "run", "uwsgi", "uwsgi.ini"]

build-essentialってなんなのかよくわからなかったのですが, gccとかいろんなソフトウェアのインストールに必要なものの詰め合わせんなんですね.余談.

あとは, ./でbuildしてrun.これだけで終わりです.

docker build -t myflaskapp .
docker run myflaskapp --rm -p 5000:5000

http://localhost:5000にアクセスすれば繋がるはず.

0
3
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
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?