其他分享
首页 > 其他分享> > 10 Docker Compose

10 Docker Compose

作者:互联网

10 Docker Compose

10.1 Compose 简介

平常通过Dockerfile 文件生成一个镜像来使用,但是在微服务架构下,效率非常低,很难处理依赖管理,但是可以使用Docker Compose 来轻松高效的管理容器,定义运行多个容器。

Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,从配置中创建并启动所有服务。可以在任何环境使用Compose,一般使用Compose 主要有三个步骤:

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

image-20210509203850839

10.2.2 添加授权

sudo chmod +x /usr/local/bin/docker-compose

image-20210521214241286

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:

10.3.4 创建docker-compose.yml文件

vim docker-compose.yml
version: "3.9"
services:
web:
  build: .
  ports:
     - "5000:5000"
redis:
  image: "redis:alpine"

image-20210521214058826

10.3.5 生成和运行该项目

docker-compose up

image-20210521214328628

访问测试

image-20210521214451170

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