实战:用docker-compose容器化springboot项目

文章目录

    • 前言
    • 技术积累
      • docker-compose定义
      • docker-compose文件参数
      • docker-compose命令
    • 实战演示
      • 1、创建挂载路径
      • 2、编写docker-compose.yml
      • 3、启动并管理容器
    • 写在最后

前言

前面我们学习和实战了用dockerfile构建镜像,通过镜像可以任意在docker环境容器化部署项目。但是作为WEB领域的开发者,大多都是微服务架构,一个项目会有很多的子项目和中间件,一个个的容器化部署会非常的麻烦。那么,此时我们可以用docker-compose批量构建镜像和容器化,简化我们的运维。

技术积累

docker-compose定义

docker-compose 望文生义就是docker组件,可以构建镜像和管理容器。开发人员可以用它批量构建镜像和启动容器。

docker-compose文件参数

常用参数:
version 指定compose的文件版本,必写
services 定义服务,必写

以下是services参数:

参数含义
build配置构建时,Compose 会利用它自动构建镜像,该值可以是一个路径,也可以是一个对象
image镜像名称或镜像ID。如果本地没有指定镜像,则会去docker hub上拉取
restart: always容器总是重新启动
container_name容器名
volumes挂载共享目录
command构建时需要执行的命令
ports对外暴露的端口
environment添加环境变量
depends_on依赖其他服务,其他服务容器化后才进行
networks设置网络,不配置会创建默认网络,所有服务都会加入这个网络

docker-compose命令

参数含义
docker-compose -h查看帮助
docker-compose build构建镜像
docker-compose build -d后台构建镜像
docker-compose up创建并运行所有容器
docker-compose up -d创建并后台运行所有容器
docker-compose -f docker-compose.yml up -d指定模板
docker-compose down停止并删除容器、网络、卷、镜像
docker-compose pull拉取依赖镜像
dokcer-compose config检查配置
dokcer-compose config -q检查配置,有问题才有输出
docker-compose restart重启服务
docker-compose start启动服务
docker-compose stop停止服务
docker-compose ps列出项目中所有的容器
docker-compose logs查看容器中日志信息
docker-compose up --force-recreate -d修改compose后强制重新创建容器

实战演示

在实际的生产中容器化部署往往是多个镜像进行容器化,比如kafka集群、rabbitmq集群、zk集群,一般不建议多种不相关的镜像放在一个docker-compose中。对于数据库一般不建议容器化,微服务集群建议容器化。

由于在实际生产环境服务镜像一般都是由dockerfile直接产生,一般不会使用docker-compose进行build。如果需要用docker-compose 构建镜像可以直接使用services下的build参数,并提供dockerfile路径即可。

本文直接使用docker-compose启动管理多个容器
目标镜像:demo_demo、demo_test-demo

1、创建挂载路径

mkdir -p /home/test/demo/logs

2、编写docker-compose.yml

编写docker-compose,对两个镜像进行容器化配置,并指定日志挂载目录和时区。

vim docker-compose.yml
version: '3.3'  #docker-compose版本
services: #服务列表
  demo: #服务名
    container_name: demo #容器名称
    image: demo_demo  #镜像
    ports: #端口映射
      - 8888:9999
    volumes: #目录挂载
      - /home/test/demo/logs:/opt/logs
      - /etc/localtime:/etc/localtime
    restart: always #自动重启
    environment: #环境变量
      TZ: Asia/Shanghai    #时区
  test-demo:
    container_name: test-demo
    image: demo_test-demo
    ports:
      - 7777:9999
    volumes:
      - /home/test/demo/logs:/opt/logs
      - /etc/localtime:/etc/localtime
    restart: always
    environment:
      TZ: Asia/Shanghai

3、启动并管理容器

》》》后台启动容器

docker-compose up -d

》》》查看容器

docker ps | grep demo

在这里插入图片描述

》》》查看端口映射

netstat -nplt | grep 8888

netstat -nplt | grep 7777

在这里插入图片描述

》》》查看容器日志

docker-compose logs  --tail 300 -f demo

在这里插入图片描述

》》》修改docker-compose强制重启容器

docker-compose up --force-recreate -d

在这里插入图片描述

写在最后

用docker-compose管理容器化springboot项目较为简单,可以直接批量构建镜像和容器化管理,大大大简化我们的运维。在实际的生产环境中,对于数据库一般不建议容器化,微服务集群建议容器化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/31478.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Opencv-C++笔记 (7) : opencv-文件操作XML和YMAL文件

文章目录 一、概述二、文件操作三、打开文件四、写入五、读写个人源码 一、概述 除了图像数据之外,有时程序中的尺寸较小的Mat类矩阵、字符串、数组等 数据也需要进行保存,这些数据通常保存成XML文件或者YAML文件。本小节中将介绍如何利用OpenCV 4中的函…

神经网络:卷积操作

当谈到计算机视觉中的网络模型结构时,卷积操作是其中一个关键的组成部分。卷积操作是一种基于局部区域的操作,它在计算机视觉中用于图像处理和特征提取。 卷积操作的原理如下: 给定一个输入图像和一个称为卷积核(或滤波器&#x…

【ARIMA-SSA-LSTM】合差分自回归移动平均方法-麻雀优化-长短期记忆神经网络研究(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

前端Vue自定义数字输入框 带加减按钮的数字输入框组件

前端Vue自定义数字输入框 带加减按钮的数字输入框组件&#xff0c; 下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13163 效果图如下&#xff1a; # cc-numbox #### 使用方法 使用方法 <!-- title: 标题 isSetMax: 是否设置最…

synchronized原理

Synchronized能够实现原子性和可见性&#xff1a;在Java内存模型中&#xff0c;synchronized规定&#xff0c;线程在加锁时&#xff0c;先清空工作内存→在主内存中拷贝最新变量的副本到工作内存→执行完代码→将更改后的共享变量的值刷新到主内存中→释放互斥锁。 synchroniz…

Axure教程—折叠面手风琴效果

上文中介绍了用Axure制作折叠面板的基础制作&#xff0c;这次介绍折叠面板手机风琴效果 效果 预览地址&#xff1a;https://e18rf6.axshare.com 功能 点击标题展开内容&#xff0c;点击另一标题&#xff0c;其展开的内容折叠 制作 拖入四个动态面板&#xff0c;分别命名为1、…

【微服务】springboot 通用限流方案设计与实现

目录 一、背景 二、限流概述 2.1 dubbo 服务治理模式 2.1.1 dubbo框架级限流 2.1.2 线程池设置 2.1.3 集成第三方组件 2.2 springcloud 服务治理模式 2.2.1 hystrix 2.2.2 sentinel 2.3 网关层限流 三、常用限流策略 3.1 限流常用的算法 3.1.1 令牌桶算法 3.1.2 …

【深度学习】2-5 神经网络-批处理

批处理&#xff08;Batch Processing&#xff09;是指在深度学习中每次迭代更新模型参数时同时处理多个样本的方式。 批处理时要注意对应维度的元素个数要一致 关于之前手写数字识别的例子&#xff1a; 用图表示&#xff0c;可以发现&#xff0c;多维数组的对应维度的元素个数…

前端Vue自定义导航栏菜单 定制左侧导航菜单按钮 中部logo图标 右侧导航菜单按钮

前端Vue自定义导航栏菜单 定制左侧导航菜单按钮 中部logo图标 右侧导航菜单按钮&#xff0c; 下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13152 效果图如下&#xff1a; # cc-navHeader #### 使用方法 使用方法 在page.json设…

一种实现Spring动态数据源切换的方法 | 京东云技术团队

1 目标 不在现有查询代码逻辑上做任何改动&#xff0c;实现dao维度的数据源切换&#xff08;即表维度&#xff09; 2 使用场景 节约bdp的集群资源。接入新的宽表时&#xff0c;通常uat验证后就会停止集群释放资源&#xff0c;在对应的查询服务器uat环境时需要查询的是生产库…

实例讲解,一文弄懂workqueue和waitqueue

本期主题&#xff1a; 讲清workqueue和waitqueu&#xff1a; 从中断讲起waitqueue是什么workqueue总结 往期链接&#xff1a; linux设备驱动中的并发linux设备驱动中的编译乱序和执行乱序linux设备驱动之内核模块linux字符驱动linux字符驱动之ioctl部分linux字符驱动之read、…

分布式存储Ceph的部署及应用(创建MDS、RBD、RGW 接口)

系列文章目录 文章目录 系列文章目录一、1.存储基础2. 单机存储的问题3. 分布式存储&#xff08;软件定义的存储 SDS&#xff09; 二 Ceph1.Ceph 简介2. Ceph 数据的存储过程 总结 一、 1.存储基础 1.1 单机存储设备 ●DAS&#xff08;直接附加存储&#xff0c;是直接接到计算…

SAX解析XML返回对应格式的Map对象

前言 最近有一个解析大型xml的需求&#xff0c;xml大小7M&#xff0c;其中xml结构非常复杂&#xff0c;元素各种嵌套 不乏有元素下对象&#xff0c;元素下集合&#xff0c;集合下对象&#xff0c;集合下集合&#xff0c;兄弟不同元素节点&#xff0c;元素下对象下集合&#xff…

HDFS读写流程

读数据流程 客户端向NameNode请求文件的位置&#xff1a;客户端想要访问一个文件时&#xff0c;会向NameNode发送一个请求&#xff0c;要求获取该文件在HDFS上的位置信息。 NameNode将位置信息返回给客户端&#xff1a;NameNode接收到客户端的请求后&#xff0c;会返回该文件所…

设计模式—访问者模式

需求&#xff1a;店铺采购了一批水果&#xff08;苹果及橘子&#xff09;&#xff0c;现在市场监督局来店里检查过期的水果。 public class Fruit {private String name;private Date pickDate;public Fruit(String name, Date pickDate) {this.name name;this.pickDate pic…

javaWeb之cookiesession

1 回顾 1.1 response对象 一次响应封装对象&#xff0c;由服务器创建。使用response对象将服务器需要的数据发送给浏览器。 将数据存放response对象中&#xff0c;tomcat从response对象获得数据&#xff0c;根据数据组织http响应&#xff0c;最后将http响应内容发送给浏览器&…

selenium自动化教程及使用java来爬取数据

目录 一、介绍二、下载浏览器驱动1.获取要下载的驱动版本号2.下载驱动 三、Maven如下四、简单使用五、定位器1.定位器2.说明(1) class name 定位器(2) css selector 定位器(3) id 定位器(4) name 定位器(5) link text 定位器(6) partial link text 定位器(7) tag 定位器(8) xpa…

第8讲:$.ajax方法使用详解

jQuery对象上面定义了Ajax方法&#xff08;$.ajax()&#xff09;&#xff0c;用来处理Ajax操作。调用该方法后&#xff0c;浏览器就会向服务器发出一个HTTP请求。ajax方法有很多属性&#xff0c;但并非每次调用都要使用所有属性&#xff0c;本讲详细介绍了每个属性的作用&#…

windows搭建vue开发环境

参考博客&#xff1a;最详细的vue安装教程_一只野生程序媛的博客-CSDN博客 Vue安装环境最全教程&#xff0c;傻瓜式安装_浪漫主义码农的博客-CSDN博客 1、安装nodejs&#xff0c;从下面官网下载版本&#xff0c;对应安装就行了&#xff1a; Node.js 中文网 2、安装好后&…

Linux 多路转接 —— poll

目录 传统艺能&#x1f60e;poll&#x1f923;struct pollfd&#x1f923; poll 服务器&#x1f618;PollServer类&#x1f601;运行服务器&#x1f612;事件处理&#x1f601; 服务器测试&#x1f602; 传统艺能&#x1f60e; 小编是双非本科大二菜鸟不赘述&#xff0c;欢迎米…