DockerでFlaskとRedisを動かす

書くこと

  • Docker公式のtutorialに従う。
  • シンプルなFlask appをDockerで動かす。
  • FlaskからRedisに接続する。
  • docker-composeを使う。

フォルダの構成

├── Dockerfile
├── app.py
├── docker-compose.yml
└── requirements.txt

app.py

from flask import Flask
from redis import Redis

app = Flask(__name__)
redis = Redis(host='redis', port=6379)


@app.route('/')
def hello():
    count = redis.incr('hits')
    return 'Hello from Docker! I have been seen {} times.\n'.format(count)


if __name__ == '__main__':
    app.run(host='0.0.0.0', debug=True)

requirements.txt

Flask==0.12.2
redis==2.10.6

Dockerfile

FROM python:3.6.2
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

docker-compose.yml

version: '3'
services:
  web:
    build: ./
    ports:
     - "5000:5000"
    volumes:
     - .:/code
  redis:
    image: "redis"

動作確認

サーバーの起動

docker-compose up

サイトへアクセス

  • IPの確認
$ docker-machine ip
192.168.99.100

動作

  • アクセスするたびにカウントアップされる。
    • "Hello from Docker! I have been seen 5 times."