使用docker-compose构建一个python-web app
创建一个文件夹 python-web-app
$mkdir python-web-app
$cd python-web-app
2.创建python脚本 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 World! I have been seen {} times.\n'.format(count)
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
这个脚本使用了flask和redis的包,并且启动了一个web服务端口5000
3.创建构建python的Dockerfile
FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt -i https://pypi.douban.com/simple
CMD ["python", "app.py"]
由于在pip install 的时候,pip默认会去官方去获取,国内是无法访问的,所以这里使用了douban的镜像去下载包。
ADD . /code 是把当前目录下的文件添加到容器内部的/code 目录下
4.创建docker-compse.yml 文件
version: '2'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
redis:
image: "redis:alpine"
该文件提供了2个服务,第一个是web服务,通过build当前目录的Dockerfile文件生成,Expose了5000端口。
第二个服务是来自于redis的服务,version表示当前使用的compose文件版本.
5.查看验证,在准备好文件后,大概是这样得
6.最后我们通过使用docker-compose构建这yml文件
$docker-compose up
访问服务5000端口
这个时候,我们可以多刷新几次,可以发先times会增加,我们的服务运行成功。
我们使用docker ps
可以发现docker-compose帮我们启动好了2个容器
7.我们通过vim修改宿主机下的app.py文件,由于容器的数据卷是来源,如下效果
8.此时,docker-compose up以后,他未后台执行,如果我们需要让他后台运行,我们需要如下操作
CTRL+C
终止进程,
重新以分离的方式启动服务
$docker-compose up -d
docker ps 和docker-compose ps 查看正在运行服务
9.查看
docker-compose运行命令允许您为您的服务运行一次性命令,比如查看web服务的环境
$docker-compose run web env
但是如果使用docker ps -a就会发现
10.使用docker-compose stop 终止服务
如果你是使用docker-compose up -d 进行的服务启动,那么你需要通过stop来终止关闭服务
11.最后使用docker-compose down 回收资源
同样,down指令运行单独的进行一些资源的回收,
$docker-compose down --volumes
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。