当前位置: 首页 > news >正文

8.jib-maven-plugin构建springboot项目镜像,docker部署配置

目录

1.构建、推送镜像

1.1 执行脚本

2.2 pom.xml配置

​2.部署镜像服务

2.1 执行脚本

2.2 compose文件

3.docker stack常用命令


介绍:使用goole jib插件构建镜像,docker stack启动部署服务;

通过执行两个脚本既可以实现构建镜像、部署服务的过程。本文将对两个脚本及其他核心配置文件做详细解释。

1.构建、推送镜像

1.1 执行脚本

执行脚本sh build.sh即可,脚本位于项目根目录下,脚本build.sh内容如下:

#!/bin/bash
echo "start build myApp image...."# 指定选择prod环境
# 指定登录用户名/密码 admin/admin@server1,如果仓库没有设置登录验证,去掉此配置即可
# 通过goole的jib工具构建镜像,并将镜像推送到192.168.100.90:5000镜像仓库
# DsendCredentialsOverHttp=true,仓库是http则需要加上此参数配置mvn clean compile jib:build  -Djib.to.auth.username=admin -Djib.to.auth.password=admin@server1 -Djib.to.image=192.168.100.99:5000/myApp/backend_prod:2.2 -DsendCredentialsOverHttp=true -Djib.container.jvmFlags=-Dspring.profiles.active=dev,-Duser.timezone=Asia/Shanghai,-Xms4096m,-Xmx6144m,-Xmn512mecho "end build myApp image...."

说明:选择prod环境配置,maven 清理后并编译打包代码,再通过jib工具构建镜像并推送到镜像仓库。

执行成功如下:

2.2 pom.xml配置

由于需要goole的jib插件,所以需要在pom.xml中配置jib,配置如下:

 

2.部署镜像服务

2.1 执行脚本

sh deploy.sh start

在镜像所在服务器的(deploy.sh、docker-compose.yaml文件)目录下执行此脚本命令即可。deploy.sh脚本内容如下:

#!/bin/bash
cmd="$1"service="$2"
config="$3"basepath=$(cd `dirname $0`; pwd)login(){docker login 192.168.100.90:5000 --username=admin --password=admin@server1
}start(){echo "启动/更新服务"#如果192.168.100.90:5000设有密码则需要登录,如果没有则注释掉此行命令;#docker login 192.168.100.90:5000 --username=admin --password=admin@server1#此处调用登陆方法,作用同上行注释命令login# 部署镜像服务,起名为myAppService。# -c , --compose-file:指定stack file的路径位置为同此脚本目录下的docker-compose.yaml文件#--with-registry-auth,向swarm代理发送registry认证详细信息docker stack deploy -c $basepath/docker-compose.yaml myAppService --with-registry-auth
}down(){docker stack rm $service
}# 查询stack服务中的容器运行状态
ps(){docker stack ps $service
}usage(){echo "start version - 启动/更新服务"echo "down - 删除服务"echo "ps - 查看服务中容器的运行状态"echo "login - 登录镜像仓库"
}if [[ $cmd = "start" ]]; thenstart
elif [[ $cmd = "down" ]]; thendown
elif [[ $cmd = "ps" ]]; thenps
elif [[ $cmd = "login" ]]; thenlogin
elseusage
fi

2.2 compose文件

docker-compose.yaml文件内容如下:

#指定compose文件版本
version: '3'
#定义所有的service
services:#定义第一个service,起名为frontbackend:#镜像名称必须要与build.sh中起的名称一模一样image: 192.168.100.90:5000/myApp/backend_prod:2.2#挂载文件 宿主机文件路径:容器内文件路径volumes:- "/usr/local/project_data/my_service/report/:/usr/local/my_service/report/"- "/usr/local/project_data/my_service/json/:/usr/local/my_service/json/"- "/usr/local/project_data/my_service/logs/:/usr/local/my_service/logs/"- "/usr/local/project_data/my_service/model/:/usr/local/my_service/model/"deploy:replicas: 1update_config:parallelism: 1delay: 10srestart_policy:condition: anydelay: 10smax_attempts: 3window: 120sresources:limits:memory: 20240Mreservations:memory: 1024M#端口映射ports:- "9001:9001"

本文件创建了一个名为“backend”的service,也可以在下面继续添加其他服务。(一般情况下将前端服务和后端服务都配置到同一个compose文件中,这样就可以通过deploy.sh同时部署前后端。)

3.docker stack常用命令


启动服务后可通过docker命令查看服务状态:
docker stack ls    查看服务列表
docker stack ps 服务名   查看服务状态
docker stack ps 服务名 --no-trunc    查看服务状态,不要截断输出
docke stack rm 服务名    删除服务

http://www.lryc.cn/news/236731.html

相关文章:

  • 海康威视综合安防管理平台任意文件上传
  • Linux环境下C++ 接入OpenSSL
  • 美国网站服务器SSL证书介绍
  • JSP命令标签 静态包含/动态包含
  • Cesium点位弹窗
  • 基于单片机16路抢答器仿真系统
  • Linux常用命令亲测总结
  • 二百零六、Flume——Flume1.9.0单机版部署脚本(附截图)
  • 不必购买Mac,这款国产设计工具能轻松替代Sketch!
  • 通过多线程的方式每次发送10条MQ消息
  • springboot上传文件后显示权限不足
  • spring-boot-maven-plugin插件 —— 打包时减小jar包的大小方法
  • java Bigdecimal
  • 【C++11并发】thread 笔记
  • OBS Studio免费开源录屏工具
  • 【汇编】[bx+idata]的寻址方式、SI和DI寄存器
  • Java,集合框架,关于Map接口与Collections工具类
  • 【实用技巧】更改ArduinoIDE默认库文件位置,解放系统盘,将Arduino15中的库文件移动到其他磁盘
  • 二、什么是寄存器
  • 邀请报名|11月24日阿里云原生 Serverless 技术实践营 深圳站
  • 学习UI第一天
  • 1688商品详情原数据(2023年11月最新版)
  • CleanMyMac X2024免费测试版好不好用?值不值得下载
  • Linux操作文件的底层系统调用
  • steam搬砖项目2023年现状分析,到底还能不能做?
  • 【论文阅读】基于隐蔽带宽的汽车控制网络鲁棒认证(二)
  • string类的常用方法
  • Java面向对象(高级)-- 单例(Singleton)设计模式
  • 【Kingbase FlySync】命令模式:安装部署同步软件,实现Oracle到KES实现同步
  • 2311d导入c的语义不同