Overview
以前はDjangoでWebApplicationを作っていたが、もっと軽量で非同期のWebApplicationが必要。
という事で、tornadoを使ってみることにした。
tornadoはdjangoに比べて圧倒的に簡素にできていてインストールもファイルの構造もとてもシンプル。
というか、ファイルの構造が自由すぎて、何をどう配置するのが美しいのかよくわからない。
そんな事もあって、備忘録がてら利用記録を書くことにする
実行環境
- CentOS7 (on VMware ESXi)
- Docker CE
- ansible
Docker は必須では無いのだが、他のアプリケーションやら何やらがDocker利用の為、
tornadoもDocker上で動作するように作成する。
環境作り
tornadoをDocker上で動かす、ということでまずはtornadoが入ったDockerコンテナを作らなくてはならない。
CentOS7上にDocker環境を作るに当たってはメインで扱う内容では無いので、それぞれインストールして頂くか
拙速のansible playbookを利用されたし。
tornado DockerFile 作り
こんな風にpython3.6 ベースで作ってみた。
- DockerFile
FROM python:3.6
ENV PYTHONUNBUFFERED 1
ENV DOCKER true
RUN apt-get update && apt-get install -y vim python3-dev
RUN apt-get clean
RUN apt-get autoremove
ADD ./requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
RUN /sbin/init
但し、最後のRUNを見るとおり、tornado appは何も起動していない。
アプリケーションの追加は別の項で触れることにする。
ちなみに配置は以下の通り。
DockerFile内部でtornadoをインストールしても良いが
tornadoを本格的に利用するに辺り、Pypiモジュールが増えることも考えられるため
pip 関連は requirements.txt として外に出しておくことにする
$ ls
Dockerfile __init__.py requirements.txt
$ cat requirements.txt
tornado==4.5.3
docker-compose.yml
DockerFile を作成したのでbuid すれば利用できるが
敢えてdocker-composeで扱えるようにする。
現時点では一つのImageしか扱わないので全くcomposeである必然性は無いが。
- docker-compose.yaml
version: "3"
services:
app:
restart: always
build: ./
ports:
- 8888:8888
これでとりあえず docker-compose up -d とか docker-compose build で動く。