ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

10 Docker Compose

2021-10-08 13:33:53  阅读:157  来源: 互联网

标签:10 10.3 Compose redis compose Docker docker


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

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:

  • 从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"

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有