当前位置: 首页 > article >正文

docker compose 文件详解

        在平常的开发工作中,我们经常需要部署项目,一个项目开发完成后,部署环境先编写 Dockerfile 文件,编写完成后使用 docker  build -t 构造镜像,接下来就可以启动容器,可以直接用docker run  后面接一堆指令启动,也可以用 docker-compose.yml 文件管理指令,docker compose 是定义和运行多容器 Docker 应用的工具,用 docker compose 命令启动,这样更加的便捷,今天总结下 docker-compose.yml 的写法。

     1:docker compose 概述:

        定义和运行多容器 Docker 应用的工具,可以在里面定义多个服务信息,定义每个服务的服务名、端口映射、环境变量、网络模式等。这样可以方便的管理启动命令,方便拓展。常用于部署测试环境等。这样可以保证每个环境映射的端口、依赖的镜像等信息一致,减少因环境问题导致的差异。

     2:新建 docker-compose.yml

        一般建议将 Dockerfile、jar 包、docker-compose.yml 文件放在同一个目录下,这样操作起来更加的方便,如下图所示:

        

     3:编写 docker-compose.yml

        docker-compose.yml 文件主要定义版本、服务、镜像名称及tag、容器名称、环境信息、重启方式等。文件示例:

services:
  mall-admin:
    image: mall-admin:1.0
    container_name: mall-admin
    ports:
      - "8008:8008"
 
    environment:
      - TZ=Asia/Shanghai
      - SERVER_PORT=8008
      # 可选,Java 启动参数
      - JAVA_OPTS="-Xmx2g -Xms2g"

    privileged: true
    restart: always
    network_mode: "host"

        (1):version:在docker compose v1版本,需要根据需求定义 version 的值,在 docker compose v2版本,不需要自定义 version 的值,建议省略,查看 docker compose 版本,使用命令,docker compose version,查看如下:

Docker Compose version v2.27.1

      (2):services:定义服务信息,不同的服务有不同的服务名称,可以定义多个服务。

      (3):image:指定运行服务时所使用的 Docker 镜像。

      (4):container_name:可选的配置项,为 Docker 容器指定一个自定义的名称。

      (5):ports:实现容器内部端口与宿主机端口之间的映射,"8008:8008" 指把宿主机的8008端口映射到容器的8008端口,前边的为宿主机的端口,后边的是容器的端口。

      (6):environment:定义容器中的环境变量。基本语法:

      a:键值对形式:

           TZ="Asia/Shanghai"
           SERVER_PORT="8008"

      b:列表形式:

          - TZ=Asia/Shanghai
          - SERVER_PORT=8008

      (7):privileged:控制容器权限的配置,当值为 true 的时候,给容器等同于宿主机的权限,安全性较差。通常不建议设置为 true。

      (8):restart:为容器指定了一种重启策略,确保容器在各种情况下都能尽可能保持运行状态。当容器由于各种原因(如正常退出、异常崩溃、宿主机重启等)停止运行时,Docker 会依据此策略自动尝试重启容器。
       除了always,还有其他几种重启策略:
       no:默认策略,容器停止后不会自动重启。
       on-failure:只有当容器以非零退出码退出时,Docker 才会尝试重启它。可以通过 on-failure: N 的形式指定最多重启 N 次。
       unless-stopped:容器停止后,除非手动停止(如使用 docker stop 命令),否则 Docker 会在 Docker 守护进程重启或宿主机重启后自动重启容器。

      (9):network_mode:配置容器的网络模式,指定容器与宿主机及与其他容器之间通信的网络模式。网络模式有 bridge、host、none、Overlay等模式,每种模式对应不同的场景,可以根据自己实际的业务需求进行选择网络模式,这儿不做详解,不清楚的小伙伴可以看之前的博客:docker 网络详解-CSDN博客。

     4:docker compose 常用命令

        (1):docker compose up -d:启动新的容器,会先拉取镜像等然后创建新的容器。带上 -d 是非阻塞的,不阻塞当前的命令窗口,不带 -d 是阻塞的,会阻塞当前的命令窗口。

        (2):docker compose down:停止所有运行中的容器

        (3):docker compose start:启动一个停止的容器

        (4):docker compose restart:重启容器

        (5):docker compose build:构建镜像

        (6):docker compose config:查看配置

        (7):docker compose logs:查看容器日志

        (8):docker compose exec service-name command:进入运行中的容器

        以上为 docker compose 文件编写的基本步骤及主要内容,我们用docker-compose.yml 文件可以定义不同的服务,对容器的管理更加便捷。docker-compose.yml 中主要定义服务相关信息,如服务名、容器名、映射端口、环境变量等信息。编写完成后,可以用 docker compose up -d 命令进行测试,如果启动启动,可以用 docker ps 查看运行中的容器。


http://www.kler.cn/a/537944.html

相关文章:

  • 使用Pytorch训练一个图像分类器
  • Spring AI -使用Spring快速开发ChatGPT应用
  • Bash (Bourne-Again Shell)、Zsh (Z Shell)
  • 人工智能浪潮下脑力劳动的变革与重塑:挑战、机遇与应对策略
  • Git的使用
  • sklearn基础教程
  • 【含文档+PPT+源码】基于Python校园跑腿管理系统设计与实现
  • 网络安全治理架构图 网络安全管理架构
  • upx压缩工具使用说明
  • STC51 单片机中,定时器 / 计数器相关的寄存器
  • CNN 卷积神经网络处理图片任务 | PyTorch 深度学习实战
  • R包:ggalign调整和组合多个图形的R包
  • 判断您的Mac当前使用的是Zsh还是Bash:echo $SHELL、echo $0
  • java基础4(黑马)
  • 语言月赛 202308【小粉兔做麻辣兔头】题解(AC)
  • TypeScript 中的元组:固定长度的数组
  • 论软件架构风格论文
  • 【C#】任务调度的实现原理与组件应用Quartz.Net
  • windows蓝牙驱动开发-蓝牙 LE 邻近感应配置文件
  • 小程序:如何暂时停用小程序?
  • 模板方法模式(Template)
  • 利用UNIAPP实现短视频上下滑动播放功能
  • #光子学小白#光子学与人工智能的跨界融合:从基础研究到产业应用 怎么学啊?
  • 悬链线的方程及其推导过程
  • 代理软件更改IP地址会影响网速吗
  • 5.5信息安全