10 Docker Compose
作者:互联网
10 Docker Compose
10.1 Compose 简介
平常通过Dockerfile 文件生成一个镜像来使用,但是在微服务架构下,效率非常低,很难处理依赖管理,但是可以使用Docker Compose 来轻松高效的管理容器,定义运行多个容器。
Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,从配置中创建并启动所有服务。可以在任何环境使用Compose,一般使用Compose 主要有三个步骤:
-
编写Dockerfile
-
编写YAML文件
-
启动项目
Compose 是Docker 官方的开源项目,需要独立安装使用,
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: {}
10.2 Compose 安装
10.2.1 下载安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
10.2.2 添加授权
sudo chmod +x /usr/local/bin/docker-compose
10.2.3 建立软连接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
10.3 Compose 入门体验
10.3.1 创建目录
mkdir composetest
cd composetest
10.3.2 编写程序文件
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)
vim requirements.txt
flask
redis
10.3.3 创建Dockerfile文件
在此步骤中,您将编写一个构建Docker映像的Dockerfile。该图像包含Python应用程序所需的所有依赖关系,包括Python本身。
vim 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"]
这告诉Docker:
-
从Python 3.7映像开始构建映像。
-
将工作目录设置为
/code
。 -
设置
flask
命令使用的环境变量。 -
安装gcc和其他依赖项
-
复制
requirements.txt
并安装Python依赖项。 -
将元数据添加到图像以描述容器正在侦听端口5000
-
将
.
项目中的当前目录复制到.
映像中的工作目录。 -
将容器的默认命令设置为
flask run
。
10.3.4 创建docker-compose.yml文件
vim docker-compose.yml
version: "3.9"
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
10.3.5 生成和运行该项目
docker-compose up
访问测试
10.4 YAML规则
version:'' #版本
service: #服务
服务1:web
#服务配置
images
build
network
depends_on #依赖 先启动依赖
-redis
...
服务2:redis
服务3...
#其他配置 网络/卷、全局规则
volumes:
networks:
configs:
标签:10,10.3,Compose,redis,compose,Docker,docker 来源: https://www.cnblogs.com/weicunqi/p/15379318.html