一、官方介绍
Compose是用于定义和运行多容器Docker应用程序的工具。通过Compose,您可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。
Compose可在所有环境中工作:生产,开发,测试以及CI工作流。、
使用Compose基本上是一个三步过程:
- 使用定义您的应用环境,Dockerfile以便可以在任何地方复制。
- 定义组成应用程序的服务,docker-compose.yml以便它们可以在隔离的环境中一起运行。
- Run docker-compose up and Compose启动并运行您的整个应用程序
二、docker compose安装
1、运行以下命令以下载Docker Compose的当前稳定版本:
curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose(国外网站比较慢)
或者:curl -L "https://get.daocloud.io/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose(推荐)
2、将可执行权限应用于二进制文件:
chmod +x /usr/local/bin/docker-compose
3、测试安装
docker-compose version
三、docker compose使用
1、设定
1)为项目创建目录:mkdir composetest
2)进入创建文件夹:cd composetest
3)在项目目录中创建一个名为app.py的文件:vim 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)
4)在项目目录中创建另一个名为requirements.txt添加:
flask
redis
2、创建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、编写docker-compose.yml
version: "3.8"
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
4、启动doker compose
docker-compose up
四、docker compose其他命令
停止docker compose: docker-compose down
查看docker网络:docker network ls
查看docker网络细节:docker network inspect composetest_default
查看docker compose进程:docker-compose ps