(十)Docker Compose安装与创建Flask web应用
虫师 创建于 almost 7 years 之前
最后更新: less than a minute 之前
阅读数: 122
Docker Compose 是 Docker 官方编排(Orchestration)项目之一, 负责快速在集群中部署分布式应用。
Dockerfile 可以让用户管理一个单独的应用容器;而 Compose 则允许用户在一个模板(YAML 格式)中定义一组相关联的应用容器(被称为一个 project,即项目),例如一个Web服务容器再加上后端的数据库服务容器等。
安装
该项目由 Python 编写,实际上调用了 Docker 提供的 API 来实现。 通过pip
安装。
$ python3 -m pip install docker-compose
安装成功后,可以查看docker-compose
命令的用法。
$ docker-compose
Define and run multi-container applications with Docker.
Usage:
docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
docker-compose -h|--help
Options:
-f, --file FILE Specify an alternate compose file (default: docker-compose.yml)
-p, --project-name NAME Specify an alternate project name (default: directory name)
--verbose Show more output
--no-ansi Do not print ANSI control characters
-v, --version Print version and exit
-H, --host HOST Daemon socket to connect to
……
创建 Flask 应用
创建使用Flask web应用,并将数值记入Redis。
1、创建 Web 应用
创建一个Flask web 应用,app.py 文件:
from flask import Flask
from redis import Redis
app = Flask(__name__)
redis = Redis(host='redis', port=6379)
@app.route('/')
def hello():
redis.incr('hits')
return 'Hello World! I have been seen %s times.' % redis.get('hits')
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
创建依赖文件 requirements.txt
, 内容如下:
flask
redis
2、创建 Dockerfile
在同一目录下,创建 Dockerfile
。
FROM python:3.5
ADD . /code
WORKDIR /code
RUN python3 -m pip install -r requirements.txt
CMD python3 app.py
对上面的Dockerfile做一下简单说明:
- 容器使用Python 3.5的镜像
- 将当前目录下文件拷贝到容器内/code
- 指定工作目录为/code
- 安装python需要的库:flask, redis
- 容器执行命令 python3 app.py
3、创建编排脚本
在同一目录下,创建 docker-compose.yml
version: '1'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
depends_on:
- redis
redis:
image: redis
对上面的编排脚本做一下简单说明:
- 这个应用定义了两个服务:web, redis
- web容器通过当前路径下的Dockerfile生成
- web容器内的5000端口映射到主机的5000端口
- 将当前目录挂载到web容器内/code
- web容器依赖于redis容器
- redis容器从Docker Hub获取镜像
所有文件都已经准备就绪。
$ ls
app.py docker-compose.yml Dockerfile requirements.txt
4、启动应用
docker-compose
执行编排脚本,分别制作和抓取web,redis镜像,启动容器。
$ sudo docker-compose up
……
redis_1 | 1:M 02 Feb 04:13:15.129 * Ready to accept connections
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: 170-376-971
整个过程会比较漫长。。。
5、访问应用
打开浏览器方位: http://0.0.0.0:5000/
效果如下: