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

news2024/11/17 13:18:24

文章目录

    • 前言
    • 技术积累
      • 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项目较为简单,可以直接批量构建镜像和容器化管理,大大大简化我们的运维。在实际的生产环境中,对于数据库一般不建议容器化,微服务集群建议容器化。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++静态联编和动态联编

目录 2.1静态联编 2.2动态联编 2.3虚函数面试题 2.3.1构造函数中使用memset函数 2.3.2this指针与虚函数的调用 2.3.3构造析构函数中调用虚函数 2.3.4动态和静态联编与访问属性和默认值 2.3.5动态创建对象时的析构函数 联编是指计算机程序彼此关联的过程,是把…

Fiddler汉化成功

我安装的fiddler 操作系统是:Win10 64Bit 操作系统的版本号是:v5.0.20194.41348 for .NET 4.6.1 fiddler下载地址: 我用夸克网盘分享了「02-Web调试工具-FiddlerSetup.exe」,点击链接即可保存。 链接:https://pan.quar…

什么是项目里程碑?如何为项目成功设置?

高速公路上每隔一公里就有一个标志牌,这表明你需要进一步行驶才能到达目的地的距离。虽然没有这些标志你也可以到达目的地,但它们的存在使你放心,让你确信走在正确的道路上。 项目里程碑在项目管理中也有同样的作用。当你的项目实现目的时&a…

Linux内核学习----整体概览

目录 1、概述 2、核心抽象及设计选型 2.1. 对进程和内核的抽象 2.2. 对进程地址空间的抽象 2.3. 支持可重入可抢占的内核 2.4. 放松管控与努力回收 2.5. 单块结构内核动态加载模块 2.6. 为系统中的一切活动打拍子 2.7. 一切皆文件的理念 3、Linux整体架构模块说明 3.…

对C++中const的说明

对C中const的说明 在C中,const是一个关键字,用于指定对象或变量是只读的,即不可修改。它可以应用于不同的上下文中,包括: 对象和变量声明:通过在变量或对象的声明前加上const关键字,可以将其标…

ACL2022 Document-Level Event Argument Extraction via Optimal Transport

Document-Level Event Argument Extraction via Optimal Transport 论文:https://aclanthology.org/2022.findings-acl.130/ 代码:- 期刊/会议:ACL 2022 摘要 事件论元抽取(EAE)是事件抽取的子任务之一&#xff0c…

智驾传感器新风向!拐点将至

“大家都比较关注激光雷达,尤其是在今年整个行业聚焦降本的大背景下,这个赛道还行不行?”6月8日,2023年度(第十四届)高工智能汽车开发者大会上,高工智能汽车研究院首发《2023-2025年中国汽车市场…

【备战秋招】每日一题:4月29日美团春招第三题:题面+题目思路 + C++/python/js/Go/java带注释

为了更好的阅读体检,为了更好的阅读体检,,可以查看我的算法学习博客第三题-酒王 在线评测链接:P1268 题目内容 塔子哥和他的朋友们共 n 人是一群热爱生活的年轻人,他们经常在一起吃饭,聊天,玩游戏。有一…

预设Preset简单使用

作用 是一个资源文件。可以保存组件、资源、项目设置的属性,将属性应用到组件、资源、项目设置上。 例如,创建一个Transform预设,可记录Transform的属性,其他Transform应用预设,会使用预设中的数据。 文档 预设 预设…

【Vue全家桶高仿小米商城】——(二)Git安装与配置

文章目录 第二章:Git安装和配置一、Windows/Mac/Linux安装二、环境变量配置、开发工具配置Windows - 环境变量Mac/Linux - 环境变量VSCode配置Git使用 VScode git,提交到仓库 三、存储密码 - SSH添加秘钥Git配置命令遇到的问题 四、Git常用命令 第二章&…

新手怎么注册速卖通及其流程?图文详解版不信你还不会!

龙哥发现最近讨论速卖通的人还挺多的,今天龙哥就给大家讲一下新手注册速卖通的流程,特别是需要你提前准备好的资料。感兴趣的朋友接着往下看吧! 速卖通店铺注册条件 1、营业执照、商标 速卖通要求注册商家必须具备合法的企业身份或个体工商户…

浅谈职场中的工作失误

浅谈职场中的工作失误 关于职场中的工作失误如何处理失误一点感言 笔者在一家软件公司从事传统的数据运维工作,也有十年之久了。十年的数据运维工作,真是一步一个脚印,一步一个坑踩出来的,也没想到这一干就是十年… 关于职场中的…

SeqTrack: Sequence to Sequence Learning for Visual Object Tracking

摘要 在本文中,我们提出了一种新的序列到序列学习框架的视觉跟踪,称为SeqTrack。它将视觉跟踪转换为一个序列生成问题,它以自回归的方式预测对象边界盒。这与之前的Siamese跟踪器和transformer跟踪器不同,它们依赖于设计复杂的磁…

【活动访谈】发力数字基座 推动物联创新—航天科技控股集团AIRIOT4.0平台发布会活动专访

近日,由航天科技控股集团股份有限公司主办的“数字基座 智慧物联—AIRIOT4.0平台发布会”在北京圆满落幕。航天三院科技委总工程师王连宝应邀出席本次会议并接受媒体采访,共同参与访谈的还有AIRIOT产品研发创始人、航天科技控股集团股份有限公司智慧物联…

python生成日报

目录 一&#xff1a;日报生成工具二&#xff1a;日报工具使用方式三&#xff1a;最终日报生成展示 一&#xff1a;日报生成工具 #!/usr/bin/python # coding:utf8class GetHtml(object):def __init__(self):self._html_head """<html><body style&qu…

美颜滤镜SDK在实时视频应用中的应用

随着智能手机的普及和网络带宽的增强&#xff0c;实时视频应用已经成为了人们日常生活中不可或缺的一部分。而在实时视频应用中&#xff0c;美颜滤镜SDK的应用也越来越广泛。本文将介绍美颜滤镜SDK在实时视频应用中的应用。 一、美颜滤镜SDK的概念 美颜滤镜SDK是一种软件开发工…

Jetpack Compose — 让Composable具备生命周期感知

Jetpack Compose — 让Composable具备生命周期感知 我们将研究不同的方法来实现可组合&#xff08;Composable&#xff09;的生命周期感知。我们还将了解可组合生命周期和视图&#xff08;View&#xff09;生命周期之间的区别。 我们将逐步探索不同的解决方案&#xff0c;以寻…

C51/C52单片机,最小系统

一个小白&#xff0c;开始学习单片机&#xff0c;从C51/52开始&#xff0c; 我学习的型号是STC98C52单片机。 STC89C52是一种低功耗、高性能CMOS8位微控制器&#xff0c;具有8K在系统可编程Flash存储器。在单芯片上&#xff0c;拥有灵巧的8位CPU和在系统可编程Flash&#xff0…

NeRF系列(4):Ha-NeRF: Hallucinated Neural Radiance Fields in the Wild论文解读

主页&#xff1a; 主页&#xff1a;Ha-NeRF&#x1f606;: Hallucinated Neural Radiance Fields in the Wildhttps://rover-xingyu.github.io/Ha-NeRF/论文&#xff1a;https://openaccess.thecvf.com/content/CVPR2022/papers/Chen_Hallucinated_Neural_Radiance_Fields_in_…

常用API(Object,Objects,StringBuilder,Math,System,BigDecimal)

1&#xff1a;Object类 1&#xff1a;Object类的作用&#xff1a; 一个类要么默认继承Object类&#xff0c;要么间接继承了Object类&#xff0c;Object类是Java中的祖宗类。Object类的方法是一切子类都可以直接使用的&#xff0c;所以我们要学习Object类的方法。 2&#xff…