docker_practice/compose/usage.md
Kang HuaiShuai 709c77adcb
Update title style
Signed-off-by: Kang HuaiShuai <khs1994@khs1994.com>
2019-11-05 23:35:43 +08:00

75 lines
1.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 使用
## 术语
首先介绍几个术语
* 服务 (`service`)一个应用容器实际上可以运行多个相同镜像的实例
* 项目 (`project`)由一组关联的应用容器组成的一个完整业务单元
可见一个项目可以由多个服务容器关联而成`Compose` 面向项目进行管理
## 场景
最常见的项目是 web 网站该项目应该包含 web 应用和缓存
下面我们用 `Python` 来建立一个能够记录页面访问次数的 web 网站
### web 应用
新建文件夹在该目录中编写 `app.py` 文件
```python
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! 该页面已被访问 {} 次。\n'.format(count)
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
```
### Dockerfile
编写 `Dockerfile` 文件内容为
```docker
FROM python:3.6-alpine
ADD . /code
WORKDIR /code
RUN pip install redis flask
CMD ["python", "app.py"]
```
### docker-compose.yml
编写 `docker-compose.yml` 文件这个是 Compose 使用的主模板文件
```yaml
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
```
### 运行 compose 项目
```bash
$ docker-compose up
```
此时访问本地 `5000` 端口每次刷新页面计数就会加 1