简介:docker官网有这样一段描述,Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration. To learn more about all the features of Compose, see the list of features. Compose works in all environments: production, staging, development, testing, as well as CI workflows. You can learn more about each case in Common Use Cases.
Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。借助 Compose,可以使用 YAML 文件来配置应用程序的服务。然后,使用单个命令,从配置中创建并启动所有服务。 Compose 适用于所有环境:生产、演练、开发、测试以及 CI 工作流。
Compose官网地址:docs.docker.com/compose/
一:Compose初识
1.编写Dockerfile文件,定义应用程序的环境
2.编写docker-compose.yml文件,让应用程序可以在隔离的环境中一起运行
3.使用docker compose up启动
一个标准的docker-compose.yml文件示例:
version: "3.9" # optional since v1.27.0
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
二:Compose安装
2.1Linux安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
github可能比较慢,我们也可以选择daocloud进行安装
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
2.2添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
如下图所示出现compose版本信息表面我们已经安装成功了!
2.3卸载compose
sudo rm /usr/local/bin/docker-compose
如果不是使用curl安装,而是使用pip安装的compose,可以这样卸载
pip uninstall docker-compose
三:Compose官网使用示例
3.1创建一个目录
mkdir composetest
cd composetest
3.2创建一个程序文件
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)
每次调用redis都会incr,一个简单的计数器
3.3引入依赖包
3.4创建Dockerfile
# syntax=docker/dockerfile:1
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
- 将
.项目中的当前目录复制到.镜像中的workdir 。 - 将容器的默认命令设置为
flask run.
3.5创建docker-compose.yml,定义服务
version: "3.9"
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
这个 Compose 文件定义了两个服务:web和redis
3.6使用Compose构建并运行应用程序
使用如下命令
docker-compose up
四:使用compose一键搭建博客wordpress
没有compose之前,我们部署一套博客,需要安装web,数据库等等,有了compose,我们只需要简单一步。
准备好yml文件,直接以后台方式启动
docker-compose up -d
使用浏览器访问,发现我们部署的博客网站已经成功了!
详情可以参考官方文档:
docs.docker.com/samples/wor…