栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

14、docker-compose

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

14、docker-compose

docker-compose 一、简绍 官方地址:

https://docs.docker.com/compose/

官方介绍
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](https://docs.docker.com/compose/#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](https://docs.docker.com/compose/#common-use-cases).
Using Compose is basically a three-step process:
1. Define your app’s environment with a `Dockerfile` so it can be reproduced anywhere.
2. Define the services that make up your app in `docker-compose.yml` so they can be run together in an isolated environment.
3. Run `docker compose up` and the [Docker compose command](https://docs.docker.com/compose/cli-command/) starts and runs your entire app. You can alternatively run `docker-compose up` using the docker-compose binary.

通过官方介绍我们读到了:

第一段读到了

docker compose 是用来定义或者去启动docker多容器的应用要想使用docker compose,你需要使用ymal文件去配置你的应用服务最后你去使用一个简单的命令去创建或则开启你的所有服务了解更多特性:https://docs.docker.com/compose/#features

第二段我们了解到

docker compose可以在所有环境中进行工作常见用例:https://docs.docker.com/compose/#common-use-cases

第三段我们可以读到

使用compose需要三个步骤:

使用Dockerfile去定义我们应用的环境,他可以放在任何地方在docker-compose中定义组成应用的服务。这样它们就可以在一个隔离的环境中一起运行。启动docker应用使用docker compose up 或docker compose up --build命令学习地址:https://docs.docker.com/compose/cli-command/ docker-compose.yml的简单列子

# 版本,当前我们使用的compose版本
version: "3.9"  # optional since v1.27.0
#服务,这个服务里边配置了两个应用,其中一个是web另一个是redis
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:
      - redis
  redis:
    image: redis
#其他配置,下边这个配置是卷挂载
volumes:
  logvolume01: {}

了解更多有关compose稳健配置的信息,参见官网地址:https://docs.docker.com/compose/compose-file/

Compose有一些命令用于管理应用程序的整个生命周期:

Start, stop, and rebuild services 开始、暂停和重新构建服务View the status of running services 查看运行服务的状态Stream the log output of running services 流化运行服务的日志输出Run a one-off command on a service 在服务器上运行一次命令 二、安装docker compose

安装compose要有docker环境,这个是大前提

开始安装在linux系统上 第一步,下载docker compose
 # 这个是国外的下载地址,可能会下载失败或则下载速度很慢
 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
 # 使用我们国内的下载地址,非常快
 curl -L https://get.daocloud.io/docker/compose/releases/download/v2.2.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
第二步,查看版本号
docker-compose --version

第三步,给compose执行权限

sudo chmod +x /usr/local/bin/docker-compose
三、卸载docker compose 两种方式

使用curl去卸载:

sudo rm /usr/local/bin/docker-compose

使用pid

pip uninstall docker-compose
四、开启docker compose的学习 八个步骤 1、设置

①创建一个空的文件夹

mkdir composetest
 cd composetest

②创建一个文件名字为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)

③创建名为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"]
3、编写docker-compose.yml文件
version: "3.9"
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"
4、使用docker-compose up命令来构建运行项目
docker-compose up

5、绑定挂载

编辑docker-compose.yml文件绑定挂载

version: "3.9"
services:
  web:
    build: .
    ports:
      - "5000:5000"
      # 多了这儿两个配置,一个是数据卷挂载,一个是环境
    volumes:
      - .:/code
    environment:
      FLASK_ENV: development
  redis:
    image: "redis:alpine"

新的卷键将主机上的项目目录(当前目录)挂载到容器内的/code,允许您动态地修改代码,而不必重新构建映像。环境键设置FLASK_ENV环境变量,该变量告诉flask run在开发模式下运行,并在更改时重新加载代码。这种模式只能在开发中使用。

6、重新启动运行
docker-compose up
7、更新应用程序

由于现在使用卷将应用程序代码挂载到容器中,因此您可以对其代码进行更改并立即看到更改,而无需重新构建映像。

return 'Hello from Docker! I have been seen {} times.n'.format(count)
8、访问

修改完成之后我们并没有重启还是在保持在上次访问的量

修改后:

进入容器我们看到数据已经挂载到容器目录的/code目录下

sudo docker exec -it 3045fdab0704 /bin/sh

所以我么恩在这里做了改动,就回立即生效,通过flask

9、其他命令

后台运行

docker-compose up -d #后台启动
docker-compose ps #当前运行的应用
#docker-compose run允许您为您的服务运行一次性命令。例如,要查看哪些环境变量对web服务可用:
docker-compose run web env
docker-compose stop #停止应用

10、特殊
#和docker-compose stop 还不一样
docker-compose down 
# 您可以使用down命令删除所有内容,完全删除容器--volumes也可以删除Redis容器使用的数据卷:
docker-compose down --volumes

链图片转存中…(img-oyV3EvfL-1645926003902)]

10、特殊
#和docker-compose stop 还不一样
docker-compose down 
# 您可以使用down命令删除所有内容,完全删除容器--volumes也可以删除Redis容器使用的数据卷:
docker-compose down --volumes

[外链图片转存中…(img-IMbepWEc-1645926003902)]

[外链图片转存中…(img-eGx1TEKu-1645926003903)]

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/748415.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号