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)
在项目文件夹下创建一个
requirements.txt的文件,并将下面的代码拷贝并粘贴到该文件中:
flask
redis到此,我们已经完成了新建项目,编码,添加依赖等工作。
创建Dockerfile
下面我们创建一个
Dockerfile文件用于构建Docker镜像,该镜像包含了运行该Web应用的所有依赖,包括Python运行环境。在项目文件夹下创建一个
Dockerfile文件,并将下面的内容拷贝并粘贴到该文件中:
FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]大概解释一下这个配置文件:
使用python-3.4-alpine作为基础镜像
将当前目录添加到镜像中/code目录下
将/code设置为工作目录
安装Python依赖
设置默认执行命令
在Compose文件中定义services
在项目文件夹下创建一个
docker-compose.yml文件,并将下面的内容拷贝并粘贴到该文件中:
version: '2'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
redis:
image: "redis:alpine"该配置文件中包含两个services,即web和redis。web会使用当前目录中的Dockerfile文件构建镜像,并将容器的5000端口暴露给主机,然后将项目文件夹挂载到容器中的/code目录下;redis使用官方发布的镜像构建。
构建并运行
执行下面的命令构建并运行容器:
sudo docker-compose up容器构建完成并启动后,可以在浏览器中输入http://localhost:5000查看结果。页面会打印“Hello World! I have been seen 1 times.”,刷新页面后,计数会累加变成2。
更新应用
由于项目文件夹挂载到了容器中,所以我们可以直接修改项目文件夹的应用,修改的结果立即反应到容器中,而不用重新启动容器。将app.py文件中的hello方法中的返回值修改成如下:
return ‘Hello from Docker! I have been seen {} times.n’.format(count)
保存后刷新浏览器,发现打印结果已经更新。
Compose的其他命令










