docker compose 文件详解

news/2025/2/9 5:26:38 标签: docker compose, docker

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

     1:docker compose>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>docker compose v1版本,需要根据需求定义 version 的值,在 docker compose>docker compose v2版本,不需要自定义 version 的值,建议省略,查看 docker compose>docker compose 版本,使用命令,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>docker compose 常用命令

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

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

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

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

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

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

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

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

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


http://www.niftyadmin.cn/n/5845553.html

相关文章

【Outlook】如何将特定邮件显示在Outlook的重点收件箱中

随着公司业务的发展,人事部门开始通过SMTP发送薪资单到每位员工的邮箱。然而,这些邮件在Outlook中默认不显示在重点收件箱中,可能会导致部分员工忽略其他收件箱中的重要邮件。 为了避免这种情况,我们可以通过以下两种方法来解决&…

在qtcreator中添加片段,提高开发效率。

文件名&#xff1a;text.xml <?xml version"1.0" encoding"utf-8"?> <snippets><!-- 版权声明 --><snippet group"Text" trigger"copyright" id"comment_copyright">/*!* file %{CurrentDocum…

Axios 拦截器实现的原理

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

QT-面试

1. C&#xff08;特别是 Qt&#xff09;开发中&#xff0c;内存优化的方法 1. 合理管理对象生命周期&#xff0c;使用智能指针 Qt 提供了 QScopedPointer 和 QSharedPointer 来管理对象生命周期&#xff0c;避免手动 delete 导致的内存泄漏。 2. 减少内存占用 QString、QBy…

Python实现GO鹅优化算法优化支持向量机SVM分类模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 随着信息技术的迅猛发展&#xff0c;数据量呈爆炸式增长&#xff0c;如何从海量的数据中提取有价值…

【开源免费】基于SpringBoot+Vue.JS乐享田园系统(JAVA毕业设计)

本文项目编号 T 184 &#xff0c;文末自助获取源码 \color{red}{T184&#xff0c;文末自助获取源码} T184&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

25/2/7 <机器人基础> 牛顿-欧拉递推公式,开闭环

牛顿-欧拉递推公式是用于计算刚体动力学中&#xff0c;刚体的角速度和角加速度的递推关系。这个公式是牛顿第二定律和欧拉旋转定理的结合&#xff0c;适用于描述刚体在空间中的旋转运动。 对于一个刚体&#xff0c;设其在某时刻的角速度为 ω&#xff0c;角加速度为 α&#xf…

详解状态模式

引言 水有固态、液态、气态三种状态&#xff0c;在不同条件下这三种状态可以相互转化。同样在软件设计中&#xff0c;有些对象也有不同的状态&#xff0c;不同状态的行为不同&#xff0c;状态模式就是用来处理这种情况的。 1.概念 状态模式(State Pattern)&#xff1a;允许一个…