Docker折腾记: (2)基于docker-compose构建yapi容器

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 这篇主要是用docker-compose来编排我们第一篇的内容,顺便谈谈docekr-compose的好处


前言


这篇主要是用docker-compose来编排我们第一篇的内容,顺便谈谈docekr-compose的好处


docker-compose是什么? 简言之就是一个容器编排工具;


前置基础


在第一篇的基础上,你还要懂得yaml的写法,比如数组的写法,对象的写法等等

写法大体和json差不多,但是可表达的东西更多


一般用pip(python的一个包管理工具)就可以安装最新的docker-compose版本,

喜欢折腾的也可以自行编译维护


compose.yml


注意事项


  • yaml对缩进非常严格,一个空格都能造成错误
  • docker-compose


  • 冒号后面需要跟随空格,除了卷或者端口的映射
  • 独立的区域,比如volume,networks这种待映射的值不能以数组的形式,必须为mapping(映射,就是跟随冒号)
  • 直接拼接映射的portvolume需要用双引号包括


# 使用版本号为3.6
version: '3.6'
services:
  # 声明yapi服务
  yapi:
    # 选择的镜像
    image:  crper/yapi:latest
    # 容器的自定义名字,也就是命令行的--name
    container_name:  yapi
    # 不用: 则只是暴露内部端口,用了就是映射外部访问的接口 , -p
    ports:
      - "3000:3000"
    # 单个主机上用bridge(桥接)居多,Swarm(集群)上的overlay, 还有几个模式,比如host
    networks:
      - yapi
    # 启动的时候依赖哪个镜像
    depends_on:
      - yapi-mongo
    # 设置容器的DNS服务
    dns:
      - 114.114.114.114
      - 8.8.8.8
    # 容器重启策略,这里是开启了任何错误都会默认重启
    restart:  always
  # mongo服务
  yapi-mongo:
    restart:  always
    image:  mongo:latest
    networks:
      - yapi
    container_name:  yapi-mongo
    ports:
      - "27017:27017"
    # 映射卷
    volumes:
      - "yapi-mongo:/data/db"
# 自定义的网络名
networks:
  yapi:
# 待映射的volume
volumes:
  yapi-mongo:
# 配置还有很多,比如什么子网,传参,日志输出,dns,临时文件夹,网络模式,资源分配等等
# 还能直接在里面构建镜像,而不用去用现有的
# 参数很多,所以要熟悉的配置也是比较麻烦的,这种东西只能一点点的去总结经验
# 具体看官方网站对compose的介绍 :  https: //docs.docker.com/compose/compose-file/


命令行操作


docker-compose只是个编排工具!!!!要记住这个;核心还是依赖docker;


因为你启动后,docker的相关命令还是可以查看,停止乃至删除容器;


编排工具里面的封装的停止这些,可以理解为"队列",就是批量帮你处理你编排文件的容器

docker-compose的命令行用起来和docker差不多,compose针对的是编排,而docker是单一容器


  • 创建容器实例并启动

docker-compose up: 这个命令会执行docker-compose.yml,根据规则全部执行完毕(没有错误的情况下)


若是不想卡在终端一直展示输出,(用-d)守护进程的模式来启动即可


当然,你若是配置文件不是这个名字,需要用-f来指定compose的启动文件


  • 停止且删除容器


docker-compose down : 这个会把当前配置文件启动的服务依次干掉,并移除


  • 暂停某个服务: docker-compose stop [options] services


  • 删除已经停止的容器:docker-compose rm


build              Build or rebuild services
  bundle             Generate a Docker bundle from the Compose file
  config             Validate and view the Compose file
  create             Create services
  down               Stop and remove containers, networks, images, and volumes
  events             Receive real time events from containers
  exec               Execute a command in a running container
  help               Get help on a command
  images             List images
  kill               Kill containers
  logs               View output from containers
  pause              Pause services
  port               Print the public port for a port binding
  ps                 List containers
  pull               Pull service images
  push               Push service images
  restart            Restart services
  rm                 Remove stopped containers
  run                Run a one-off command
  scale              Set number of containers for a service
  start              Start services
  stop               Stop services
  top                Display the running processes
  unpause            Unpause services
  up                 Create and start containers
  version            Show the Docker-Compose version information


看这些描述就能大体知道做什么的了..可以看到实例的状态,日志,进入容器等等

比如docker-compose ps(查看服务的状态,运行,停止!)


Name                Command              State     Ports
-----------------------------------------------------------
yapi         entrypoint.sh                 Exit 137
yapi-mongo   docker-entrypoint.sh mongod   Exit 0


比如docker-compose.yml用到了哪些镜像, docker-compose images


Container    Repository    Tag       Image Id      Size
--------------------------------------------------------
yapi         crper/yapi   latest   ae69ea846d69   472 MB
yapi-mongo   mongo        latest   91a642e82a2a   361 MB


比如删除停止的服务,docKer-compose rm,不带参数会有交互式



By default, anonymous volumes attached to containers will not be removed. You
can override this with `-v`. To list all volumes, use `docker volume ls`.
Any data which is not in a volume will be lost.
Usage: rm [options] [SERVICE...]
Options:
    -f, --force   Don't ask to confirm removal(强制删除,不交互)
    -s, --stop    Stop the containers, if required, before removing(停止容器,如果需要可以在此之前删除)
    -v            Remove any anonymous volumes attached to containers(删除任何链接到容器的匿名卷)
    -a, --all     Deprecated - no effect.(已经废除,无效)


目录
相关文章
|
3月前
|
人工智能 前端开发 Docker
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
在 AI 智能体开发中,开发者常面临本地调试与云端部署的矛盾。本文介绍如何通过 Docker Compose 与 Docker Offload 解决这一难题,实现从本地快速迭代到云端高效扩容的全流程。内容涵盖多服务协同、容器化配置、GPU 支持及实战案例,助你构建高效、一致的 AI 智能体开发环境。
334 1
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
|
2月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
2月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
350 5
|
2月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
171 6
kde
|
2月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
kde
429 4
|
JSON 前端开发 NoSQL
Docker安装Yapi并集成IDEA上传接口到Yapi
Yapi是一个优雅切高效的接口管理服务,给后端开发提供更方便的api管理,给前端开发提供更方便的接口mock调试,给测试人员提供更轻便的接口测试和自动化测试环境,也可以自动生成各种接口文档,也支持导入json、swagger、json格式的接口,可以配置不同环境调用接口,满足研发过程中需要的基础的接口管理及应用场景,非常好用~
453 0
 Docker安装Yapi并集成IDEA上传接口到Yapi
|
3月前
|
缓存 前端开发 Docker
Docker Layer Caching:加速你的容器构建
Docker Layer Caching:加速你的容器构建