Docker三剑客之docker-compose
docker-compose 是 Docker 生态系统中的一个重要成员,它允许开发人员使用一个简单的配置文件来定义和运行多个 Docker 容器。通过 docker-compose,你可以定义应用程序的各个组件、容器之间的依赖关系以及网络配置,从而实现在一个命令中启动、停止和管理整个应用程序栈。
安装 docker-compose
我们之前有篇文章Docker 及 Docker Compose 安装指南介绍过docker和docker-compose 的安装,家人们可以查阅下。我们在这块在介绍下docker-compose的安转。
从github上下载docker-compose二进制文件安装
- 下载最新版的docker-compose文件
官方文档地址:https://docs.docker.com/compose/install/
下载地址
https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64
- 将文件放到
/usr/local/bin/下并重命名
cd /usr/local/bin/
mv docker-compose-linux-x86_64 docker-compose
- 添加可执行权限
cd /usr/local/bin/
sudo chmod +x docker-compose
- 测试安装结果
docker-compose --version
显示 Docker Compose version v2.5.0 则表示已经安装成功了
编写 docker-compose.yml 文件
docker-compose 使用一个名为 docker-compose.yml 的文件来定义应用程序的组件和配置。这个文件使用 YAML 格式,因此可读性良好,并且易于编写和维护。
以下是一个mysql8.0的示例,展示了如何定义一个 mysql数据库服务:
#这个文件使用的 Docker Compose 版本。在这个例子中,使用的是版本3.3。
version: '3.3'
# 定义了一个名为 mysql-db 的服务。这个服务将会创建一个 MySQL 数据库容器。
services:mysql-db:# 指定容器的名称container_name: mysql # 指定镜像和版本image: mysql:8.0 #将容器内的端口 3306 映射到宿主机的端口 3306。这允许在宿主机上通过端口 3306 访问 MySQL 服务器。ports:- "3306:3306"#配置容器的重启策略为 always,这意味着当容器退出时会自动重启。restart: always# 容器日志大小配置logging:driver: 'json-file'options:max-size: '5g'#设置容器内的环境变量 MYSQL_ROOT_PASSWORD,用于配置 MySQL 数据库的 root 用户密码为 xj2022。environment:# 配置root密码MYSQL_ROOT_PASSWORD: xj2022#设置数据卷挂载volumes:# 挂载数据目录- "./mysql/data:/var/lib/mysql" # 挂载配置文件目录- "./mysql/config:/etc/mysql/conf.d"
常用命令
此处所有命令均在docker-compose.yml 同级目录下使用
- 启动服务
docker-compose up
后台启动
docker-compose up -d
使用 docker-compose up 命令可以启动你在配置文件中定义的所有服务。加上 -d 参数可以在后台运行它们。
常用参数的详细解释:
- -d 或 --detach:以“分离模式”运行,即在后台运行容器,不会阻塞终端。
- –build:在启动之前构建服务的镜像。如果 docker-compose.yml 中有 build 配置,使用这个选项可以强制重新构建镜像。
- –force-recreate:在启动之前强制重新创建容器。即使容器已经存在,也会停止并重新创建它们。
- –no-deps:不启动依赖的服务。默认情况下,docker-compose up 会启动所有依赖的服务,但使用此选项可以避免启动它们。
- –scale SERVICE=NUM:指定要扩展的服务和容器实例数量。
- 停止服务
docker-compose down
使用 docker-compose down 命令可以停止并移除所有相关的容器、网络和存储卷。
- 查看日志
docker-compose logs -f
使用 docker-compose logs 命令可以查看指定服务的日志输出。
常用参数的详细解释:
- -f 或 --follow:实时跟踪日志输出,类似于 tail -f 命令。当新日志输出产生时,会自动显示在终端上。
- –tail=<数值>:仅显示指定行数的日志。例如,–tail=100 将仅显示最后的 100 行日志。
- –timestamps:在日志输出中包含时间戳。
- –no-color:禁止使用颜色编码显示日志。
- -t 或 --timestamps:在日志输出中显示时间戳。
- –since=<时间戳或持续时间>:仅显示从指定时间戳开始的日志,或从指定的持续时间内的日志。例如,–since=“2023-08-01” 或 --since=“2h30m”。
- –until=<时间戳或持续时间>:仅显示直到指定时间戳为止的日志,或在指定的持续时间内的日志。例如,–until=“2023-08-15” 或 --until=“1h”。
总结
docker-compose 是一个强大的工具,能够简化多个 Docker 容器的定义、管理和交互。它使开发人员能够轻松地在本地环境中模拟复杂的应用程序栈,加速开发和测试流程。通过编写清晰的 docker-compose.yml 文件,并结合 docker-compose 提供的命令,你可以以更高效的方式构建和管理容器化的应用程序。无论是小型项目还是大规模系统,docker-compose 都是一个不可或缺的工具,助力你更好地驾驭 Docker 的强大能力。
相关文章:
Docker三剑客之docker-compose
docker-compose 是 Docker 生态系统中的一个重要成员,它允许开发人员使用一个简单的配置文件来定义和运行多个 Docker 容器。通过 docker-compose,你可以定义应用程序的各个组件、容器之间的依赖关系以及网络配置,从而实现在一个命令中启动、…...
单调队列
目录 一,单调队列 二,模板实现 三,OJ实战 剑指 Offer 59 - I. 滑动窗口的最大值 一,单调队列 单调队列是双端队列的拓展,支持尾部插入,双端删除,其中的数据始终维持单调性,从而…...
effective c++ 笔记
TODO:还没看太懂的篇章 item25 item35 模板相关内容 文章目录 基础视C为一个语言联邦以const, enum, inline替换#define尽可能使用constconst成员函数 确定对象使用前已被初始化 构造、析构和赋值内含引用或常量成员的类的赋值操作需要自己重写不想使用自动生成的函…...
【送书活动】深入浅出SSD:固态存储核心技术、原理与实战
前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄ÿ…...
GaussDB数据库SQL系列-行列转换
一、前言 二、简述 1、行转列概念 2、列转行概念 三、GaussDB数据库的行列转行实验示例 1、行转列示例 1)创建实验表(行存表) 2)静态行转列 3)行转列(结果值:拼接式) 4&…...
美国陆军网络司令部利用人工智能增强网络攻防和作战决策能力
源自: 奇安网情局 声明:公众号转载的文章及图片出于非商业性的教育和科研目的供大家参考和探讨,并不意味着支持其观点或证实其内容的真实性。版权归原作者所有,如转载稿涉及版权等问题,请立即联系我们删除。 “人工智能技术与咨询…...
Notion团队协作魔法:如何玩转数字工作空间?
Notion简介 Notion已经成为现代团队协作的首选工具之一。它不仅仅是一个笔记应用,更是一个强大的团队协作平台,能够满足多种工作场景的需求。 Notion的核心功能 Notion提供了丰富的功能,如文档、数据库、看板、日历等,满足团队的…...
视频云存储/安防监控/AI视频智能分析平台新功能:人员倒地检测详解
人工智能技术已经越来越多地融入到视频监控领域中,近期我们也发布了基于AI智能视频云存储/安防监控视频智能分析平台的众多新功能,该平台内置多种AI算法,可对实时视频中的人脸、人体、物体等进行检测、跟踪与抓拍,支持口罩佩戴检测…...
解决RabbitMQ报错Stats in management UI are disabled on this node
文章目录 问题描述:解决步骤:进入容器后,cd到以下路径修改 management_agent.disable_metrics_collector false退出容器重启rabbitmq容器 问题描述: linux 部署 rabbitmq后,打开rabbitmq管理界面。点击channels&#…...
【重点】【NAND】聊聊固态硬盘SSD的寿命及其影响因素
固态硬盘是由主控芯片、存储颗粒芯片组成的闪存设备,固体硬盘的英文简称是SSD,如果是移动用的固态硬盘,则其英文简称为PSSD。 固态硬盘SSD分工业级和消费级等,目前,工业级固态硬盘SSD通常采用MLC闪存,而消…...
数据库约束
文章目录 1. 简介2. 代码演示3. 外键约束4. 外键删除和更新行为 1. 简介 概念:约束时作用于表中子段上的规则,用于限制存储在表中的shuju目的:保证数据库中数据的正确、有效性和完整性分类: 约束描述关键字非空约束限制该字段不…...
Unity实现MQTT服务器
首先下载MqttNet:MqttNet下载地址 解压好后使用vs打开,并生成.dll文件(我这里下载的是4.1.2.350版本) 然后再/Source/MQTTnet/bin/Debug/net452 文件夹中找到生成的文件 新建unity工程,创建Plugins文件夹࿰…...
Linux(centos) 下 Mysql 环境安装
linux 下进行环境安装相对比较简单,可还是会遇到各种奇奇怪怪的问题,我们来梳理一波 安装 mysql 我们会用到下地址: Mysql 官方文档的地址,可以参考,不要全部使用 https://dev.mysql.com/doc/refman/8.0/en/linux-i…...
决策树(Decision Tree)
决策树的定义: 分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型: 内部结点(internal node)和叶结点(leaf node࿰…...
解决 PaddleClas 下载预训练模型报错 ModuleNotFoundError No module named ‘ppcls‘ 的问题
当我们在使用 PaddleClas 进行预训练模型下载时,可能会遇到一个报错,报错信息为 ModuleNotFoundError: No module named ppcls。这个错误通常是因为 Python 解释器无法找到名为 ppcls 的模块,而我们的代码中正尝试导入它。让我们一起来解决这…...
视觉化洞察:为什么我们需要数据可视化?
为什么我们需要数据可视化?这个问题在信息时代变得愈发重要。数据,如今已成为生活的一部分,我们每天都在产生大量的数据,从社交媒体到购物记录,从健康数据到工作表现,数据无处不在。然而,数据本…...
C语言函数概述——拜佛代码
函数是一种可重用的代码块,用于执行特定任务或完成特定功能函数作用:对具备相同逻辑的代码进行封装,提高代码的编写效率,实现对代码的重用函数作用演示代码: #include <stdio.h>// 定义函数 void func() {print…...
防火墙日志分析工具
防火墙提供对进入组织网络的网络流量的来源和类型的可见性,这使得防火墙日志成为重要的信息源,包括所有连接的源地址、目标地址、协议和端口号等详细信息,此信息可以提供对未知安全威胁的见解,是威胁管理中的重要工具。 防火墙日…...
Autofac中多个类继承同一个接口,如何注入?与抽象工厂模式相结合
多个类继承同一个接口,如何注入?与抽象工厂模式相结合 需求: 原来是抽象工厂模式,多个类继承同一个接口。 现在需要使用Autofac进行选择性注入。 Autofac默认常识: Autofac中多个类继承同一个接口,默认是最后一个接口注入的类。 解决方案:(约定大于配…...
Django系列之日志配置
如何配置 settings.py 文件中增加如下日志模块 """logger 配置""" LOGGING {version: 1,disable_existing_loggers: False, # 是否去掉目前项目中其他地方中以及使用的日志功能,但是将来我们可能会引入第三方的模块,里…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
对象回调初步研究
_OBJECT_TYPE结构分析 在介绍什么是对象回调前,首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例,用_OBJECT_TYPE这个结构来解析它,0x80处就是今天要介绍的回调链表,但是先不着急,先把目光…...
前端工具库lodash与lodash-es区别详解
lodash 和 lodash-es 是同一工具库的两个不同版本,核心功能完全一致,主要区别在于模块化格式和优化方式,适合不同的开发环境。以下是详细对比: 1. 模块化格式 lodash 使用 CommonJS 模块格式(require/module.exports&a…...
P10909 [蓝桥杯 2024 国 B] 立定跳远
# P10909 [蓝桥杯 2024 国 B] 立定跳远 ## 题目描述 在运动会上,小明从数轴的原点开始向正方向立定跳远。项目设置了 $n$ 个检查点 $a_1, a_2, \cdots , a_n$ 且 $a_i \ge a_{i−1} > 0$。小明必须先后跳跃到每个检查点上且只能跳跃到检查点上。同时࿰…...
