docker系列(9) - docker-compose
文章目录
- 9. compose编排
- 9.1 介绍
- 9.2 安装
- 9.3 compose常用命令
- 9.4 实战Springboot部署
- 9.4.1 准备组件配置文件
- 9.4.1.1 redis的配置文件
- 9.4.1.2 MySQL的配置文件
- 9.4.1.3 SpringBoot打包文件
- 9.4.2 准备docker-compose.yml
- 9.4.3 启动服务
- 9.4.4 测试验证
- 9.5 实战Elasticsearch+Kibana案例
- 9.5.1 准备组件配置文件
- 9.5.1.1 Elasticsearch配置
- 9.5.1.2 Kibana配置
- 9.5.2 docker-compose配置
- 9.5.3 验证测试
9. compose编排
9.1 介绍
多服务部署工具,通过一个docker-compose.yml模板文件,定义一组关联的应用容器为一个项目。
简单来说,就是当我们一个项目有多个服务需要启动时,通过docker-compose直接一键启动,就可以将所有相关的服务同时启动或者停止。
9.2 安装
参考官方安装文档:https://docs.docker.com/compose/install/linux/
以下两种方式都可以:
第一种:包管理器安装
sudo yum install docker-compose-plugin
第二种:手工安装
curl -SL https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose# 通常不需要执行这句
#sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose#查看版本
docker-compose --version#卸载方法
sudo rm /usr/local/bin/docker-compose
9.3 compose常用命令
| 说明 | 命令 |
|---|---|
| docker-compose -h | 帮助 |
| docker-compose up | 启动所有docker-compose服务 |
| docker-compose up -d | 启动所有docker-compose服务并后台运行 |
| docker-compose down | 停止并删除容器,网络,卷,镜像 |
| docker-compose exec yml里面的服务id | 进入容器内部,停止并删除容器,网络,卷,镜像 |
| docker-compose ps | 展示当前运行的所有容器 |
| docker-compose top | 展示当前运行的容器进程 |
| docker-compose logs yml的服务id | 查看容器输出日志 |
| docker-compose config | 检查配置 |
| docker-compose config -q | 检查配置,有问题才输出 |
| docker-compose restart | 重启服务 |
| docker-compose start | 启动服务 |
| docker-compose stop | 停止服务 |
9.4 实战Springboot部署
使用docker-compose来启动springboot项目。
使用到springboot、redis、mysql组件。
9.4.1 准备组件配置文件
9.4.1.1 redis的配置文件
redis配置文件: /docker/redis/redis.conf
# 开启 AOF 持久化
appendonly yes# 指定 AOF 文件名
appendfilename "appendonly.aof"# 指定 AOF 文件保存目录
dir /data# 关闭 RDB 持久化
save ""
# 开启 RDB 持久化
#save 900 1
#save 300 10
#save 60 10000# 禁用 Redis 的保护模式,允许外部连接
protected-mode no# 允许其他服务访问
bind 0.0.0.0# 指定 Redis 监听的端口
port 6379# 指定日志生成的文件
logfile redis.log
9.4.1.2 MySQL的配置文件
mysql的配置文件:/docker/mysql/conf/my.cnf
[client]default-character-set=utf8[mysql]default-character-set=utf8[mysqld]init_connect='SET collation_connection = utf8_unicode_ci'init_connect='SET NAMES utf8'character-set-server=utf8collation-server=utf8_unicode_ciskip-character-set-client-handshakeskip-name-resolve
9.4.1.3 SpringBoot打包文件
springboot: 使用7.6.3中打包的镜像springboot:1.0
参考本系列连接跳转
9.4.2 准备docker-compose.yml
version: "3"services: bootService:build: .image: springboot:1.0container_name: springbootenvironment:SPRING_PROFILES_ACTIVE: prodports:- "9002:9002"volumes:- /app/microService:/datanetworks:- bridgedepends_on:- redis- mysqlredis:image: redis:6.2.13container_name: redisprivileged: trueports:- 6379:6379environment:- TZ=Asia/Shanghai- TAKE_FILE_OWNERSHIP=truevolumes:- /docker/redis/data:/data - /docker/redis/redis.conf:/etc/redis/redis.confnetworks:- bridgecommand: redis-server /etc/redis/redis.conf mysql:image: mysql:5.7container_name: mysqlprivileged: trueports:- "3306:3306"networks:- bridgevolumes:- /docker/mysql/log:/var/log/mysql - /docker/mysql/data:/var/lib/mysql- /docker/mysql/conf/:/etc/mysql/conf.denvironment:MYSQL_ROOT_PASSWORD: "root"MYSQL_ALLOW_EMPTY_PASSWORD: "no"command: --default-authentication-plugin=mysql_native_password #解决外部无法访问networks:bridge:
9.4.3 启动服务
# 先检查配置是否有异常
docker-compose config -q# 启动所有容器
#第一次测试可以不使用-d
docker-compose up


一切正常,转为后台运行
# 先移除所有的
docker-compose down# 再后台运行
docker-compose -d up
9.4.4 测试验证
Commands:build Build or rebuild servicesconfig Parse, resolve and render compose file in canonical formatcp Copy files/folders between a service container and the local filesystemcreate Creates containers for a service.down Stop and remove containers, networksevents Receive real time events from containers.exec Execute a command in a running container.images List images used by the created containerskill Force stop service containers.logs View output from containersls List running compose projectspause Pause servicesport Print the public port for a port binding.ps List containerspull Pull service imagespush Push service imagesrestart Restart service containersrm Removes stopped service containersrun Run a one-off command on a service.start Start servicesstop Stop servicestop Display the running processesunpause Unpause servicesup Create and start containersversion Show the Docker Compose version informationwait Block until the first service container stops
例如重启服务:
# 查看服务
docker-compose ls#重启服务
docker-compose restart bootService# 启动服务
docker-compose start bootService# 停止服务
docker-compose stop bootService

9.5 实战Elasticsearch+Kibana案例
9.5.1 准备组件配置文件
9.5.1.1 Elasticsearch配置
配置文件:/docker/elasticsearch/config/elasticsearch.yml
network.host: 0.0.0.0
discovery.type: single-node
9.5.1.2 Kibana配置
配置文件: /docker/kibana/config/kibana.yml
server.name: kibana
server.host: "0.0.0.0"
elasticsearch.hosts: [ "http://elasticsearch:9200" ] #
elasticsearch.username: "admin"
elasticsearch.password: "admin"
i18n.locale: "zh-CN"
[“http://elasticsearch:9200”]这里elasticsearch是指容器的服务名,不设置这个,会导致kibana连接不上elasticsearch。
9.5.2 docker-compose配置
docker-compose.yml
version: '3.3'
services:elasticsearch:image: elasticsearch:7.17.7 # 使用的镜像名称container_name: elasticsearch # 容器名称ports: # 指定暴露的端口- 9200:9200- 9300:9300environment: - ES_JAVA_OPTS= -Xms2g -Xmx2g # 指定 JVM 内存大小volumes: # 指定挂载目录- /docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml- /docker/elasticsearch/data:/usr/share/elasticsearch/data- /docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins- /docker/elasticsearch/logs:/usr/share/elasticsearch/logsnetworks: - bridgekibana:image: kibana:7.17.7container_name: kibanaports:- 5601:5601depends_on: # 服务依赖- elasticsearchvolumes:- /docker/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.ymlnetworks:- bridge
networks:bridge:
9.5.3 验证测试
#启动:
docker-compose up -d# 卸载
docker-compose down

http://bidata:5601 访问
相关文章:
docker系列(9) - docker-compose
文章目录 9. compose编排9.1 介绍9.2 安装9.3 compose常用命令9.4 实战Springboot部署9.4.1 准备组件配置文件9.4.1.1 redis的配置文件9.4.1.2 MySQL的配置文件9.4.1.3 SpringBoot打包文件 9.4.2 准备docker-compose.yml9.4.3 启动服务9.4.4 测试验证 9.5 实战ElasticsearchKib…...
Vue中如何进行日历展示与操作
在Vue中创建交互式日历应用 在Web开发中,创建一个交互式的日历应用是一项常见的任务。Vue.js作为一个流行的JavaScript框架,提供了许多便捷的工具和组件来简化日历的开发。本文将介绍如何使用Vue来创建一个简单但功能强大的日历应用,包括展示…...
SpringBoot 返回图片、Excel、音视频等流数据几种处理方式
方式一:直接针对响应对象(response)实现 @RestController @Slf4j @Api(tags = SwaggerConfig.TAG_IMAGE) @RequestMapping(SwaggerConfig.TAG_IMAGE) public class ImageController {@GetMapping(value = "/getImage")@ApiOperation("获取图片-以ImageIO流形…...
【Vue面试题一】、说说你对 Vue 的理解
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:有使用过vue吗ÿ…...
vue3 axios
npm install axios import axios from axios // 创建axios实例 const request axios.create({baseURL: ,// 所有的请求地址前缀部分(没有后端请求不用写)timeout: 80000, // 请求超时时间(毫秒)withCredentials: true,// 异步请求携带cookie// headers: {// 设置后端需要的传…...
划片机:半导体生产的必备设备
划片机是半导体加工行业中的重要设备,主要用于将晶圆切割成晶片颗粒,为后道工序粘片做好准备。随着国内半导体生产能力的提高,划片机市场的需求也在逐渐增加。 在市场定位上,划片机可以应用于半导体芯片和其他微电子器件的制造过程…...
电路维修——双端队列BFS
达达是来自异世界的魔女,她在漫无目的地四处漂流的时候,遇到了善良的少女翰翰,从而被收留在地球上。 翰翰的家里有一辆飞行车。有一天飞行车的电路板突然出现了故障,导致无法启动。电路板的整体结构是一个 R 行 C 列的网格&#…...
乌班图22.04 kubeadm简单搭建k8s集群
1. 我遇到的问题 任何部署类问题实际上对于萌新来说都不算简单,因为没有经验,这里我简单将部署的步骤和想法给大家讲述一下 2. 简单安装步骤 准备 3台标准安装的乌班图server22.04(采用vm虚拟机安装,ip为192.168.50.3࿰…...
vue3富文本编辑器的二次封装开发-Tinymce
欢迎点击领取 -《前端面试题进阶指南》:前端登顶之巅-最全面的前端知识点梳理总结 *分享一个使用比较久的🪜 简介 1、安装:pnpm add tinymce / pnpm add tinymce/tinymce-vue > Vue3 tinymce tinymce/tinymce-vue 2、功能实现图片上传…...
typescript 类型声明文件
typescript 类型声明文件概述 在今天几乎所有的JavaScript应用都会引入许多第三方库来完成任务需求。这些第三方库不管是否是用TS编写的,最终都要编译成JS代码,才能发布给开发者使用。6我们知道是TS提供了类型,才有了代码提示和类型保护等机…...
Hadoop伪分布式环境搭建
什么是Hadoop伪分布式集群? Hadoop 伪分布式集群是一种在单个节点上模拟分布式环境的配置,用于学习、开发和测试 Hadoop 的功能和特性。它提供了一个简化的方式来体验和熟悉 Hadoop 的各个组件,而无需配置和管理一个真正的多节点集群。 在 Ha…...
javaee ssm框架项目添加分页控件
搭建ssm框架项目 参考上一篇博文 添加分页控件 引入依赖 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schema…...
2023年中国非晶纳米晶竞争格局、产业链及行业产量分析[图]
非晶合金又称“液态金属、金属玻璃”,是一种新型软磁合金材料,主要包含铁、硅、硼等元素。其主要制品非晶合金薄带的制造工艺是采用急速冷却技术将合金熔液以每秒106℃的速度急速冷却,形成厚度约0.03mm的非晶合金薄带,物理状态表现…...
在业务开发中遇到的树形结构(部门、区域、职位),递归处理。
文章目录 概要对象结构示例完整示例小结 概要 本文主要记录在树形结构中会遇到的问题, 使用部门结构讲解,main方法进行演示。 1、获取部门树结构 2、根据部门id获取所有下级 3、根据部门id获取上级部门 4、根据部门id获取类似面包屑(总公司…...
张量-算术操作函数
tf.add(x,y,name None)求和函数 示例代码如下: import tensorflow.compat.v1 as tf tf.disable_v2_behavior()x 1 y 2a tf.add(x,y)with tf.Session() as sess:print(sess.run(a)) tf.subtract(x,y,name None)减法函数 示例代码如下: import tensorflow.compat.v1 as …...
虚拟展厅有什么重要意义,了解虚拟展厅在宣传中的应用
引言: 随着科技的不断进步,虚拟展厅已经逐渐成为展览行业的重要一环。虚拟展厅是一种数字化平台,为观众提供了与传统展览完全不同的体验。 一.虚拟展厅的定义 虚拟展厅是一个通过互联网和虚拟现实技术创建的数字展示空间&#x…...
华为OD机试真题-补种未成活胡杨(Java/C++/Go/Python)
华为OD机试真题-补种未成活胡杨(Java/C++/Go/Python) 题目描述 近些年来,我国防沙治沙取得显著成果。某沙漠新种植N棵胡杨(编号1-N),排成一排。 一个月后,有M棵胡杨未能成活。现可补种胡杨K棵,请问如何补种(只能补种,不能新种),可以得到最多的连续胡杨树? 输入…...
Java卷上天,可以转行干什么?
小刚是某名企里的一位有5年经验的高级Java开发工程师,每天沉重的的工作让他疲惫不堪,让他萌生出想换工作的心理,但是转行其他工作他又不清楚该找什么样的工作 因为JAVA 这几年的更新实在是太太太……快了,JAVA 8 都还没用多久&am…...
Pyside6 安装和简单界面开发
Pyside6 安装和简单界面开发 Pyside6介绍Pysied6开发环境搭建Python安装Pysied6安装 Pyside6界面开发简单界面设计界面设计界面编译 编写界面初始化代码软件打包 Pyside6介绍 对于Python的GUI开发来说,Python自带的可视化编程模块的功能较弱,PySide是跨…...
python读取vivo手机截图,将满屏图片文件移动别的路径
问题之初 python读取vivo手机截图, 将满屏图片文件移动别的路径好多这样的图片,占用手机大量的内存,食之无味弃之可惜!那么会复制粘贴👀代码的我们我们今天就把这些图片筛选清理掉。 这段代码 原有逻辑的基础上&…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...
聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇
根据 QYResearch 发布的市场报告显示,全球市场规模预计在 2031 年达到 9848 万美元,2025 - 2031 年期间年复合增长率(CAGR)为 3.7%。在竞争格局上,市场集中度较高,2024 年全球前十强厂商占据约 74.0% 的市场…...
边缘计算网关提升水产养殖尾水处理的远程运维效率
一、项目背景 随着水产养殖行业的快速发展,养殖尾水的处理成为了一个亟待解决的环保问题。传统的尾水处理方式不仅效率低下,而且难以实现精准监控和管理。为了提升尾水处理的效果和效率,同时降低人力成本,某大型水产养殖企业决定…...
CSS 工具对比:UnoCSS vs Tailwind CSS,谁是你的菜?
在现代前端开发中,Utility-First (功能优先) CSS 框架已经成为主流。其中,Tailwind CSS 无疑是市场的领导者和标杆。然而,一个名为 UnoCSS 的新星正以其惊人的性能和极致的灵活性迅速崛起。 这篇文章将深入探讨这两款工具的核心理念、技术差…...
基于Java项目的Karate API测试
Karate 实现了可以只编写Feature 文件进行测试,但是对于熟悉Java语言的开发或是测试人员,可以通过编程方式集成 Karate 丰富的自动化和数据断言功能。 本篇快速介绍在Java Maven项目中编写和运行测试的示例。 创建Maven项目 最简单的创建项目的方式就是创建一个目录,里面…...
react-pdf(pdfjs-dist)如何兼容老浏览器(chrome 49)
之前都是使用react-pdf来渲染pdf文件,这次有个需求是要兼容xp环境,xp上chrome最高支持到49,虽然说iframe或者embed都可以实现预览pdf,但为了后续的定制化需求,还是需要使用js库来渲染。 chrome 49测试环境 能用的测试…...
