使用Docker配置Flask开发环境
2017-09-17
工具
-
Docker 一种开源容器应用,供开发者打包自己的开发环境,可以任意移植
-
docker-compose 一种管理多个Docker容器的工具,可以简化我们启动容器的各种命令
配置文件
首先我们需要一个python基础景象,Docker各种基础镜像都可以从官方找到 https://hub.docker.com/_/python/
。找到基础镜像之后就可以基于它做相应的配置,这些操作都记录在Dockerfile中。
Dockerfile:
FROM python:3.6-slim # 官网中挑选的python基础镜像
ADD requirements.txt requirements.txt # requirements.txt罗列了需要安装的python模块,将文件复制到容器中
RUN pip install -r ./requirements.txt # 执行模块安装
EXPOSE 5000 # 对外暴露5000端口
requirements.txt
Flask # 需要安装的python模块,如有其他需要安装的模块,如下依次写入。
# redis
# pymongo
配置完Dockerfile之后,开始配置docker-compose文件。 docker-compose.yml
web:
build: ../../dockerfile/python/3 # DockerFile所在目录
ports:
- "5000:5000" # 对外暴露端口,与Dockerfile中端口号一致
volumes:
- ~/workspace/python/redis:/code # 本地工作目录与容器中目录映射
command:
- /code/app.py # 处理请求的python脚本
app.py
#!/usr/bin/env python
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Flask Dockerized'
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0')
容器启动
在docker-compose.yml所在文件夹执行命令 docker-compose up
,在控制台中看到如下输出:
Starting flash_web_1 ...
Starting flash_web_1 ... done
Attaching to flash_web_1
web_1 | * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
web_1 | * Restarting with stat
web_1 | * Debugger is active!
web_1 | * Debugger PIN: 166-703-177
同时在浏览器中输入 localhost:5000
,并正常显示文本 Flask Dockerized
,环境就配置成功啦!对应的log都可以在启动容器的终端中查看到。例如:
web_1 | 172.17.0.1 - - [13/Sep/2017 13:18:17] "GET / HTTP/1.1" 200 -
web_1 | 172.17.0.1 - - [13/Sep/2017 13:18:17] "GET /favicon.ico HTTP/1.1" 404 -
总结
以上配置了最简的Flask开发环境,实际开发中还需要数据库、缓存、nginx等,这些基础容器都可以在Docker官网中找到,并使用docker-compose可以很清晰的将这些容器关联起来。