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

目录

1.构建、推送镜像

[1.1 执行脚本](#1.1 执行脚本)

[2.2 pom.xml配置](#2.2 pom.xml配置)

​2.部署镜像服务

[2.1 执行脚本](#2.1 执行脚本)

[2.2 compose文件](#2.2 compose文件)

[3.docker stack常用命令](#3.docker stack常用命令)


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

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

1.构建、推送镜像

1.1 执行脚本

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

bash 复制代码
#!/bin/bash
echo "start build myApp image...."

# 指定选择prod环境
# 通过goole的jib工具构建镜像,并将镜像推送到192.168.100.90:5000镜像仓库
# DsendCredentialsOverHttp=true,仓库是http则需要加上此参数配置
mvn clean compile jib:build -Djib.to.image=192.168.100.90:5000/myApp/backend_prod:2.2 -DsendCredentialsOverHttp=true -Djib.container.jvmFlags=-Dspring.profiles.active=prod,-Duser.timezone=Asia/Shanghai,-Xms4096m,-Xmx6144m,-Xmn512m


echo "end build myApp image...."

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

执行成功如下:

2.2 pom.xml配置

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

复制代码
<!-- 用没配置安全认证的registry
<allowInsecureRegistries>true</allowInsecureRegistries>

2.部署镜像服务

2.1 执行脚本

sh deploy.sh start

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

bash 复制代码
#!/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

    # 部署镜像服务,起名为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" ]]; then
    start
elif [[ $cmd = "down" ]]; then
    down
elif [[ $cmd = "ps" ]]; then
    ps
elif [[ $cmd = "login" ]]; then
    login
else
    usage
fi

2.2 compose文件

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

bash 复制代码
#指定compose文件版本
version: '3'
#定义所有的service
services:
  #定义第一个service,起名为front
  backend:
    #镜像名称必须要与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: 1
      update_config:
        parallelism: 1
        delay: 10s
      restart_policy:
        condition: any
        delay: 10s
        max_attempts: 3
        window: 120s
      resources:
        limits:
          memory: 20240M
        reservations:
          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 服务名 删除服务

相关推荐
醉颜凉21 分钟前
【NOIP提高组】潜伏者
java·c语言·开发语言·c++·算法
阿维的博客日记25 分钟前
java八股-jvm入门-程序计数器,堆,元空间,虚拟机栈,本地方法栈,类加载器,双亲委派,类加载执行过程
java·jvm
qiyi.sky26 分钟前
JavaWeb——Web入门(8/9)- Tomcat:基本使用(下载与安装、目录结构介绍、启动与关闭、可能出现的问题及解决方案、总结)
java·前端·笔记·学习·tomcat
lapiii35829 分钟前
图论-代码随想录刷题记录[JAVA]
java·数据结构·算法·图论
RainbowSea32 分钟前
4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明
java·spring·spring cloud
程序员小明z33 分钟前
基于Java的药店管理系统
java·开发语言·spring boot·毕业设计·毕设
夜色呦43 分钟前
现代电商解决方案:Spring Boot框架实践
数据库·spring boot·后端
mit6.8241 小时前
[Docker#9] 存储卷 | Volume、Bind、Tmpfs | -v/mount | MySQL 灾难恢复 | 问题
linux·运维·docker·容器·架构
qq_167401511 小时前
Docker 组添加用户,设置允许普通用户操作 docker
docker·容器
Z1eaf_complete1 小时前
Docker的基础使用
运维·docker·容器·云计算