使用docker+docker-compose,配置最简Flask开发环境
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可以很清晰的将这些容器关联起来。
Docker中安装DB2的详细教程和DBVisualize的安装教程