测试以及 CI/CD 工作流程

发布时间:2025-06-24 20:13:02  作者:北方职教升学中心  阅读量:020


存储和分发容器镜像

  • 容器运行:可以运行在任何支持Docker的环境中
  • 用途:提供一个标准化的方式打包和运行应用,确保应用在不同环境中的一致性和可移植性。采用 YAML格式编写。开发、

    2.4 两者版本兼容

    Compose版本Docker版本
    3.819.03.0+
    3.718.06.0+
    3.618.02.0+
    3.517.12.0+

    3.4

    17.09.0+
    3.317.06.0+
    3.217.04.0+
    3.11.13.1+
    3.01.13.0+
    2.417.12.0+
    2.317.06.0+
    2.21.13.0+
    2.11.12.0+
    2.01.10.0+

    三、适用于所有环境生产、概述

    Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。Compose 用 YAML 文件配置应用程序的服务。配置文件、网络、容器、Docker compose会将每个服务部署为一个容器,且会将key作为容器名字的一部分

  • networks:创建新的网络,默认自动创建bridge网络。
  • 两者之间相辅相成,Docker 提供容器化的核心功能,Docker Compose 则管理这些容器的组合和交互。环境设置和依赖关系
    • web:自己构建的镜像
      • build:用于构建镜像,指定构建镜像的 dockerfile 的上下文路径
      • ports:映射容器和宿主机的端口
      • volumes:挂载本地目录到指定容器目录,用于数据持久化或在容器之间共享数据
      • links:与redis服务连接
  • redis:构建指定镜像redis
    • image:从指定的镜像中启动容器,可以是存储仓库、

      功能:

      • 多容器管理:允许用户在一个YAML文件中定义和管理多个容器
      • 服务编排:配置容器间的网络和依赖关系
      • 一键部署:使用docker-compose up命令启动、停止和重建服务

      用途:简化多容器应用的配置和管理,适用于开发、

      在测试目录中创建名为 requirements.txt 的文件:

      [root@localhost counter-app-master]# cat requirements.txtflaskredis

      2.编写Dockerfile文件:

      redis[root@localhost counter-app-master]# cat DockerfileFROM python:3.6-alpineADD . /codeWORKDIR /codeRUN pip install -r requirements.txtCMD ["python", "app.py"]

      Dockerfile文档逐行解释说明:

      • 从 Python 3.6 镜像开始构建
      • 将当前目录拷贝到容器/code目录下
      • 定义容器工作目录为/code
      • 安装 Python 依赖项
      • 容器默认执行命令

      3.编写docker-compose.yml文件定义服务:

      [root@localhost counter-app-master]# cat docker-compose.ymlversion: "3.5"services:  web-fe:    build: .    command: python app.py    ports:      - target: 5000        published: 5000    networks:      - counter-net    volumes:      - type: volume        source: counter-vol        target: /code  redis:    image: "redis:alpine"    networks:      counter-net:networks:  counter-net:volumes:

      一级key解释说明:

      • version:定义 compose 文件格式的版本
      • services:定义不同的应用服务,上述定义web前端服务以及redis缓存数据库服务。卷和默认镜像:

              docker-compose down    #停止并移除服务

              docker-compose down -v    #停止服务并移除卷

      • 暂停服务:

              docker-compose pause

      • 取消暂停服务:

              docker-compose unpause

      • 查看服务日志:

              docker-compose logs    #查看所有服务日志

              docker-compose logs -f    #实时查看日志

      • 启动服务:

              docker-compose start

      • 停止服务:

              docker-compose stop

      • 重启服务:

              docker-compose restart

      • 查看当前服务状态:

              docker-compose ps

      • 进入后台运行的容器:

              docker-compose exec 容器名 /bin/sh

      • 拉取镜像:

              docker-compose pull

      • 构建镜像:

              docker-compose build

      • 删除或停止容器:

              docker-compose rm

      • 本地系统和容器之间复制文件/文件夹:

              docker-compose cp

  • 此网络只能实现与同一主机容器连接
  • volumes:创建新卷
  • 二级key解释说明:

    web-fe服务指令解释说明:

    • build:. 代表基于当前目录,. 下Dockerfile中定义的指令构成一个新镜像,该镜像将被用于启动该服务的容器
    • command:在容器中执行名为app.py的Python脚本作为主程序,所以在Dockerfile中将满足镜像中包含app.py及Python
    • ports:容器内的5000端口映射到主机5000端口
    • networks:指定服务连接的网络,且指定的网络需要存在,或是在一级key中的networks中定义过
    • volumes:将counter-vol卷挂载到容器/code,且指定卷counter-vol需要存在,或是在一级key中的volumes中定义过

    redis服务指定解释说明:

    • image:基于redis:alpine镜像启动一个独立名为redis的容器
    • networks:配置redis容器连接counter-net网络

    4.启动应用程序:

    [root@localhost counter-app-master]# docker-compose up    #前台启动[+] Building 143.1s (9/9) FINISHED => [internal] load build definition from Dockerfile                                            0.1s...counter-app-master-web-fe-1  |  * Restarting with statcounter-app-master-web-fe-1  |  * Debugger is active!counter-app-master-web-fe-1  |  * Debugger PIN: 127-376-714[root@localhost counter-app-master]# docker-compose up -d    #后台启动[+] Running 2/2 ⠿ Container counter-app-master-redis-1   Started                                               0.9s ⠿ Container counter-app-master-web-fe-1  Started                                               1.2s

    查看镜像、Compose 安装

    1.查看docker版本:

    [root@localhost ~]# docker --versionDocker version 24.0.7, build afdd53b

    2.下载docker-compose软件:

    [root@localhost ~]# wget https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64

    3.移动下载软件到/usr/local/bin/docker-compose覆盖旧版本:

    [root@localhost ~]# mv docker-compose-linux-x86_64 /usr/local/bin/docker-composemv: overwrite ‘/usr/local/bin/docker-compose’? y

    4.赋予执行权限:

    [root@localhost ~]# chmod +x /usr/local/bin/docker-compose

    5.测试安装是否成功:

    [root@localhost ~]# docker-compose --versionDocker Compose version v2.16.0

    6.卸载docker compose:

    [root@localhost ~]# rm -f /usr/local/bin/docker-compose

    四、标签以及镜像 ID
  • volumes:用于数据持久化和共享的数据卷定义,常用于数据库存储、

    docker-compose.yml配置案例

    version: "3.9"  services:    web:      build: .      ports:        - "8000:5000"      volumes:        - .:/code        - logvolume01:/var/log      links:        - redis    redis:      image: redisvolumes:  logvolume01: {}

    文件配置解释说明:

    • version:指定 Compose 文件格式yaml的规则版本,版本决定可用的配置选项
    • service:定义了应用中的服务,每个服务可以使用不同的镜像、日志等数据的持久化

    五、

  • 两者面向不同用户,Docker 面向任何需要容器化应用的用户,Docker Compose 则面向需要同时管理多个容器的开发者和运维团队。网络及卷:

    [root@localhost counter-app-master]# docker imagesREPOSITORY                  TAG       IMAGE ID       CREATED          SIZEcounter-app-master-web-fe   latest    da547efce15a   52 minutes ago   55.1MBredis                       alpine    3900abf41552   2 years ago      32.4MB[root@localhost counter-app-master]# docker psCONTAINER ID   IMAGE                       COMMAND                  CREATED          STATUS         PORTS                                       NAMES775de272840c   counter-app-master-web-fe   "python app.py"          52 minutes ago   Up 2 minutes   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   counter-app-master-web-fe-160badb2d9db4   redis:alpine                "docker-entrypoint.s…"   52 minutes ago   Up 2 minutes   6379/tcp                                    counter-app-master-redis-1[root@localhost counter-app-master]# docker network lsNETWORK ID     NAME                             DRIVER    SCOPE2d11a73f849e   bridge                           bridge    local7bc0ef96bf07   counter-app-master_counter-net   bridge    local303bac79a650   host                             host      localf08b7d46c61e   none                             null      local[root@localhost counter-app-master]# docker volume lsDRIVER    VOLUME NAMElocal     counter-app-master_counter-vol

    测试访问结果:每刷新一次页面,计数将叠加

    六、

    功能:

    • 容器化:将应用和其运行环境封装在一个容器中
    • 镜像管理:创建、

      一、Docker Compose--文件基本结构

              Docker Compose 文件是 Docker Compose 工具的核心,用于定义和配置多容器 Docker 应用

    二、测试和生产环境中的复杂应用。基本使用--案例

    目录结构:

    [root@localhost ~]# tree counter-app-master
    ├── app.py    #应用程序代码(Python Flask应用)
    ├── docker-compose.yml    #compose文件,定义Docker部署应用
    ├── Dockerfile    #定义构建web-fe服务所使用的镜像
    └── requirements.txt    #应用所依赖的Python包

    1.定义应用程序依赖项:

    [root@localhost ~]# mkdir counter-app-master    #创建测试目录[root@localhost ~]# cd counter-app-master[root@localhost counter-app-master]# vim app.py    #创建名为app.py的文件import timeimport redisfrom flask import Flaskapp = 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 "What's up Docker Deep Divers! You've visited me {} times.\n".format(count)if __name__ == "__main__":    app.run(host="0.0.0.0", debug=True)

            上述此示例中,redis 是应用程序网络上的 redis 容器的主机名,所以使用默认端口6379。测试以及 CI/CD 工作流程。

    Compose的使用三步:

    • 使用 Dockerfile 自定义应用程序的环境,便于在任何地方复制它;
    • 使用 docker-compose.yml 定义构成的应用程序的服务,便于隔离环境中一起运行;
    • 运行 docker-compose up 命令启动并运行整个应用程序。

      2.2 Docker(容器平台)

      定义:一个开放源代码的容器化平台,允许开发者将应用及其依赖打包进轻量级、常用命令

    • 启动服务:

            docker-compose up    #在前台启动服务

            docker-compose up -d    #启动服务在后台运行

            docker-compose up --build    #重新构建服务

    • 停止并移除服务、

      2.3 两者关系

      1. Docker 是 Docker Compose 的前提Docker Compose 是为了简化使用 Docker 时多容器应用的管理和部署而设计的。Docker Compose与Docker关系

        2.1 Docker Compose(容器编排工具)

        定义:Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。使用单一命令,可以从 YAML 文件配置中创建并启动所有服务。可移植的容器中。