docker-compose入门使用
Docker Compose 安装
Docker Compose 是 Docker 的独立产品,因此需要安装 Docker 之后在单独安装 Docker Compose .
方法一:
#下载
1
2
3
4
5
|
sudo curl -L https://github.com/docker/compose/releases/download/1.20.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#安装
chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose version
|
方法二:
安装pip
1
2
3
4
5
6
7
8
9
10
|
yum -y install epel-release
yum -y install python-pip
#确认版本
pip --version
#更新pip
pip install --upgrade pip
#安装docker-compose
pip install docker-compose
#查看版本
docker-compose version
|
安装补全工具(可选)
1
2
3
4
5
|
#安装
yum install bash-completion
#下载docker-compose脚本
curl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
|
快速上手
第一步,创建 Python 服务
创建项目路径:
mkdir composetest
cd composetest
在目录下创建app.py文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
def get_hit_count():
retries = 5
while True:
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5)
@app.route('/')
def hello():
count = get_hit_count()
return 'Hello World! I have been seen {} times.\n'.format(count)
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
|
在这个例子中, redis 使用了容器内的网络默认端口是6379。这段 Python 程序的内容就是,启动后连接 Redis 并且输出 hello()方法,当每次访问的时候累计访问次数并且将结果放回到页面。
在同目录下创建requirements.txt文件,添加项目依赖的python包:
第二步,创建 Dockerfile
1
2
3
4
5
|
FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
|
第三步,使用 Compose 文件定义一个服务 docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
|
version: '2'
services:
web:
build: .
command: python app.py
ports:
- "5000:5000"
volumes:
- .:/code
redis:
image: "redis:alpine"
|
这个 Compose 文件定义了两个服务, 一个 Pyhon Web 服务和 redis 服务。
Pyhon Web 服务:使用 Dockerfile 构建了当前镜像。将 Web 容器内部的5000端口映射到 host 的5000端口;并将 Web 容器与 redis 容器连接。
redis服务:该容器直接由官方的 redis 镜像创建。
第四步,使用 Compose 编译启动应用
使用命令docker-compose up启动
docker-compose up