Docker Compose
简介
Compose是用于定义和运行多容器Docker应用程序的工具。
通过Compose,您可以使用YAML文件来配置应用程序的服务。
然后,使用一个命令,就可以从配置中创建并启动所有服务。
Compose可在所有环境中工作:生产,登台,开发,测试以及CI工作流。
一、安装
Docker Compose依靠Docker Engine进行任何有意义的工作,因此请确保根据您的设置在本地或远程安装Docker Engine。
1.运行以下命令以下载Docker Compose的当前稳定版本
[root@vcc-server ~]# curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2.将可执行权限应用于二进制文件
[root@vcc-server ~]# chmod +x /usr/local/bin/docker-compose
3.检查
[root@vcc-server ~]# docker-compose -v
docker-compose version 1.27.4, build 40524192
二、基本命令
官方文档:
https://docs.docker.com/engine/reference/commandline/compose_build/
三、文件参数
注意:撰写文件是一个YAML文件定义服务,网络和卷。撰写文件的默认路径是:./docker-compose.yml
build
在构建时间应用的配置选项;build可以指定为包含生成上下文路径的字符串:
version: "3.9"
services:
webapp:
build: ./dir
或者,作为一个对象,在上下文下指定的路径,并可选地Dockerfile和args:
version: "3.9"
services:
webapp:
build:
context: ./dir
dockerfile: Dockerfile-alternate
args:
buildno: 1
官方文档链接:https://docs.docker.com/compose/compose-file/compose-file-v3/
四、使用
1.设定一个程序
[root@vcc-server ~]# mkdir composetest
[root@vcc-server ~]# cd composetest
[root@vcc-server ~]# git clone https://github.com/blackmed/docker-compose-example.git
[root@vcc-server ~]# mv docker-compose-example/* composetest/
备注:项目内容
[root@localhost compose]# cat app.py
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)
[root@localhost compose]# cat requirements.txt
flask
redis
2.创建Dockerfile文件
[root@vcc-server composetest]# cat Dockerfile
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]
注意:
从Python 3.7映像开始构建映像。
将工作目录设置为/code。
设置flask命令使用的环境变量。
安装gcc和其他依赖项
复制requirements.txt并安装Python依赖项。
向图像添加元数据以描述容器正在侦听端口5000
将.项目中的当前目录复制到.映像中的工作目录。
将容器的默认命令设置为flask run。
3.创建定义服务
[root@vcc-server composetest]# cat docker-compose.yaml
version: "3.9"
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
注意:
1.该Compose文件定义了两个服务:web和redis。
2.该web服务使用从Dockerfile当前目录中构建的映像。然后,它将容器和主机绑定到暴露的端口5000。此示例服务使用Flask Web服务器的默认端口5000。
4.运行
[root@vcc-server composetest]# docker-compose up