微服务自动化【idea插件一键部署】

news2024/11/25 10:33:24

目录​​​​​​​

1. Docker结合Idea插件使用 

2. 私服搭建 registry

3. 私有仓库的使用

4. idea一键项目部署单独Docker镜像

5. idea一键项目部署Docker标记镜像【私库】


1. Docker结合Idea插件使用 

1. 修改Docker服务文件,注释掉"ExecStart"这一行,并添加下面信息 

vim /lib/systemd/system/docker.service
  • 代码如下
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375

2. 重新加载配置文件

systemctl daemon-reload

3. 重启服务

systemctl restart docker

4. 防火墙操作

firewall-cmd --zone=public --add-port=2375/tcp --permanent && firewall-cmd --reload && firewall-cmd --list-ports

5. 配置IDEA

 

6. 查看docker

 

7. 构建Springboot项目,生成Dockerfile,并完成镜像生成

#1.指定基础镜像
FROM openjdk:8-jdk-alpine
#2.维护者信息
MAINTAINER xyz "xyz@qq.com"
#3.创建/tmp目录并持久化到Docker数据文件夹,因为Spring Boot使用的内嵌Tomcat容器默认使用/tmp作为工作目录
VOLUME /tmp
#4.复制test1.jar到容器里(此处与之后的idea中使用docker插件一键发布是不一样的)
ADD test.jar /test.jar
#5.设置时区
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#6.声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务
EXPOSE 8080
#7.指定容器启动程序及参数(相当于在容器中用cmd命令执行jar包)
ENTRYPOINT ["java","-jar","/test.jar"]
#下面的写法指定springboot项目启动时指定的额外参数
#ENTRYPOINT ["java","-jar","/test.jar","--spring.config.location=/usr/local/project/docker/xxl-job/config/application.yml"]

8. 打包镜像

docker build -t test:1.0 .

9. 基于打包的镜像开启一个容器

docker run -itd --name test01 -p 8848:8080 test:1.0

2. 私服搭建 registry

1. 拉取Registry镜像(这里选择搭建2.7版本的registry,不使用最新版,有BUG)

docker pull registry:2.7

2. 开启容器

docker run -d \
--name myregistry \
-p 5000:5000 \
-v /usr/local/docker/registry:/var/lib/registry \
--restart=always \
registry:2.7

3. 验证是否搭建成功

curl http://127.0.0.1:5000/v2/_catalog


curl http://192.168.27.120:5000/v2/_catalog

4. 让docker信任私有镜像仓库地址

vi /etc/docker/daemon.json
  •  在daemon.json中添加以下内容,其值为注册服务器(registry)的IP及端口
"insecure-registries":["192.168.27.120:5000"]

5. 重启docker

systemctl restart docker

3. 私有仓库的使用

创建好私有仓库之后,就可以使用 docker tag 来标记一个镜像,然后推送它到仓库

  • 先在本机查看已有的镜像,选择其中一个进行上传
  • 镜像标记(push前必须先标记镜像,自定义repository不能有大写字母) 
docker tag 自定义镜像名[:版本] 私服IP:端口/仓库名[:版本]

docker tag test:1.0 192.168.27.120:5000/test:v1.0

1. 执行查看所有镜像

docker images

2. 镜像上传

docker push 192.168.27.120:5000/test:v1.0

3. 查看注册服务器的所有镜像

curl 127.0.0.1:5000/v2/_catalog

4. 从registry下载镜像

docker pull 192.168.27.120:5000/test:v1.0

4. idea一键项目部署单独Docker镜像

1. 添加pom插件

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!--docker-maven-plugin插件打包-->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <!--镜像名称-->
                    <imageName>${project.artifactId}</imageName>
                    <!--指定标签-->
                    <imageTags>
                        <imageTag>latest</imageTag>
                    </imageTags>
                    <!--基础镜像jdk1.8-->
                    <baseImage>java</baseImage>
                    <!--制作者提供本人信息-->
                    <maintainer>jmh@qq.com</maintainer>
                    <!--切换到Root目录-->
                    <workdir>/ROOT</workdir>
                    <cmd>["java", "-version"]</cmd>
                    <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint>

                    <!--指定DockerFile路径-->
                    <!--                    <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>-->

                    <!--指定远程docker api地址-->
                    <dockerHost>http://192.168.119.129:2375</dockerHost>

                    <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
                    <resources>
                        <resource>
                            <targetPath>/ROOT</targetPath>
                            <!--用于指定需要复制的根目录-->
                            <directory>${project.build.directory}</directory>
                            <!--用于指定需要复制的jar文件-->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>

2. 项目进行clear and install

3. 进入我们项目的根目录进行cmd操作

mvn docker:build

4. 可以看到已经完成部署

5. idea一键项目部署Docker标记镜像【私库】

1. 配置系统环境(变量与idea连接dokcer ip一致即可)

2. 需在maven/conf/下的setting.xml配置

<pluginGroups>
  <pluginGroup>com.spotify</pluginGroup>
</pluginGroups>

3. 添加Dockerfile文件 与pom.xml配置文件同级

FROM openjdk:8-jdk-alpine
MAINTAINER xyz "xyz@qq.com"
VOLUME /tmp

#/target/...这是你自己将项目打包后的jar包名称  /test.jar
ADD /target/test-0.0.1-SNAPSHOT-exec.jar /test.jar
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
EXPOSE 8080
ENTRYPOINT ["java","-jar","/test.jar"]

4.添加pom插件

      <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <classifier>exec</classifier>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
            <!--docker插件使用-->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.10</version>
                <executions>
                    <execution>
                        <id>default</id>
                        <!--<goals>
                            &lt;!&ndash;如果package时不想用docker打包,就注释掉这个goal&ndash;&gt;
                            <goal>build</goal>
                            <goal>push</goal>
                        </goals>-->
                    </execution>
                </executions>
                <configuration>
                    <repository>192.168.119.128:5000/test1000</repository>
                    <tag>${project.version}</tag>
                    <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>

5. 将项目打包

6. 添加maven 插件 (​​​​​​​clean package dockerfile:build -Dmaven.test.skip=true)

clean package dockerfile:build -Dmaven.test.skip=tru

7. maven插件添加后需要先将pom依赖注释掉的解释(将图中的注释掉的插件解开即可)

8. 点击maven插件运行打包docker镜像

  •  查看镜像 !ok已经打包完成

9. 问题清单!!!重点

  1. 查看是否已经配置好系统变量(建议配置好环境后电脑重启一下)
  2. 查看在maven/conf/下的setting.xml配置
<pluginGroups>
  <pluginGroup>com.spotify</pluginGroup>
</pluginGroups>

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

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

相关文章

火爆的超级人工智能ChatGPT,唯独鄙视中国人

ChatGPT你听说了吗&#xff1f;如果ChatGPT你还没有听说&#xff0c;作为一名程序员&#xff0c;那可能你就out了。使用ChatGPT受阻&#xff0c;为什么不让我们用&#xff1f;它是一款神器&#xff0c;很有意思&#xff0c;当前被大家众星捧月&#xff0c;初次用起来确实很神奇…

微服务框架 SpringCloud微服务架构 22 DSL 查询语法 22.5 相关性算分

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构22 DSL 查询语法22.5 相关性算分22.5.1 复合查询22.5.2 相关性算分22.5.3 …

前端精准测试实践

作者&#xff1a;京东云质量部 背景 随着前端技术发展&#xff0c;已经转变为数据绑定为主流的框架方式&#xff0c;与后端服务一样&#xff0c;前端代码实现也会涉及相互依赖&#xff0c;引用这些场景&#xff0c;那么应该如何准确的评估前端代码改动的影响范围&#xff1f;…

2小时开发《点球射门游戏》,动画演示思路(上),代码已开源

唠两句 最近被疫情关在家&#xff0c;时间多运动少&#xff0c;真的很无聊呀&#xff01;也许是天意为之&#xff0c;居然来世界杯了&#xff0c;虽然这届世界杯很「冷」&#xff0c;但是多少还是为无聊的我们增加了一些无聊的趣事&#xff0c;比如勇哥在等世界杯开幕式的过程…

关于影响编码效果的画质调优总结

1、背景&#xff1a; 调试一个新项目&#xff0c;要求视频帧率为20fps、码率1.5m下&#xff0c;和竞品机对比效果。发现动态场景下的效果比竞品机差距比较明显&#xff08;做的是安防类的监控相机&#xff0c;比较关注视频的效果&#xff09;&#xff0c;比如对着运动的车流时…

红队隧道应用篇之Netsh端口转发(一)

简介 netsh是从Windows 2000开始就有的一个用于配置网络设备的命令行工具 其中netsh interface portproxy是一个配置网络代理的命令, 可以配置ipv4或ipv6的端口转发代理以及双向端口转发代理 学习隧道应用前必须了解的知识:https://blog.csdn.net/xf555er/article/details/1…

softmax回归从零开始实现

1. 引入Fashion-MNIST数据集 并设置数据迭代器的批量大小为256 import torch from IPython import display from d2l import torch as d2lbatch_size 256 # 每次随机读256张图片&#xff0c;返回训练集和测试集的迭代器 train_iter, test_iter d2l.load_data_fashion_mnist…

职场日常:测试人员如何快速熟悉新业务?

身处职场&#xff0c;学习新业务在所难免&#xff0c;尤其是测试人员&#xff0c;具备良好的业务知识是我们做好质量保障的前提&#xff0c;不管是职场「新人」还是「老人」&#xff0c;快速熟悉业务的能力都是不可或缺的&#xff0c;这是我们安身立命的根本。 但&#xff0c;…

【第一章 Linux目录结构,网络连接三种模式,vi和vim】

第一章 Linux目录结构&#xff0c;网络连接三种模式&#xff0c;vi和vim 1.Linux和Unix&#xff1a; ①Unix针对于大型&#xff0c;高性能主机或服务器&#xff1b; ②Linux适用于个人计算机。 2.网络连接的三种模式&#xff1a; ①桥接模式&#xff1a;虚拟系统可以和外部系…

[附源码]JAVA毕业设计师生交流平台(系统+LW)

[附源码]JAVA毕业设计师生交流平台&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&…

一起用Go做一个小游戏(上)

引子最近偶然看到一个Go语言库&#xff0c;口号喊出“一个超级简单&#xff08;dead simple&#xff09;的2D游戏引擎”&#xff0c;好奇点开了它的官网。官网上已经有很多可以在线体验的小游戏了&#xff08;利用WASM技术&#xff09;。例如曾经风靡一时的2048&#xff1a;当然…

「Redis数据结构」列表对象(List)

「Redis数据结构」列表对象&#xff08;List&#xff09; 文章目录「Redis数据结构」列表对象&#xff08;List&#xff09;一、概述二、结构三、编码转换四、总结一、概述 Redis列表是简单的字符串列表&#xff0c;按照插入顺序排序。你可以添加一个元素到列表的头部&#xf…

(附源码)php丽江旅游服务网站系统 毕业设计 010149

php丽江旅游服务网站系统 摘 要 21世纪时信息化的时代&#xff0c;几乎任何一个行业都离不开计算机&#xff0c;将计算机运用于旅游服务管理也是十分常见的。过去使用手工的管理方式对旅游服务进行管理&#xff0c;造成了管理繁琐、难以维护等问题&#xff0c;如今使用计算机对…

APP自动化测试系列之Appium介绍及运行原理

在面试APP自动化时&#xff0c;有的面试官可能会问Appium的运行原理&#xff0c;以下介绍Appium运行原理。 一、Appium介绍 1.Appium概念 Appium是一个开源测试自动化框架&#xff0c;可用于原生&#xff0c;混合和移动Web应用程序测试。它使用WebDriver协议驱动IOS&#xf…

易基因|m6A去甲基化酶ALKBH5通过降低PHF20 mRNA甲基化抑制结直肠癌进展 | 肿瘤研究

易基因&#xff5c;m6A去甲基化酶ALKBH5通过降低PHF20 mRNA甲基化抑制结直肠癌进展 | 肿瘤研究 大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 2022年8月17日&#xff0c;北京大学人民医院胃肠外科申占龙教授课题组在《Clin Transl M…

(附源码)ssm物流公司员工管理系统 毕业设计 261625

基于ssm物流公司员工管理系统 摘 要 随着互联网大趋势的到来&#xff0c;社会的方方面面&#xff0c;各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去&#xff0c;而其中最好的方式就是建立网络管理系统&#xff0c;并对其进行信息管理。由于现在网络的发…

LeetCode简单题之按身高排序

题目 给你一个字符串数组 names &#xff0c;和一个由 互不相同 的正整数组成的数组 heights 。两个数组的长度均为 n 。 对于每个下标 i&#xff0c;names[i] 和 heights[i] 表示第 i 个人的名字和身高。 请按身高 降序 顺序返回对应的名字数组 names 。 示例 1&#xff1…

聚观早报 | 奈雪成乐乐茶第一大股东;达达与抖音达成战略合作

今日要闻&#xff1a;奈雪成乐乐茶第一大股东&#xff1b;达达与抖音达成战略合作&#xff1b;B 站启动新一轮降本增效&#xff1b;特斯拉上海工厂减产20%&#xff1b;大众将从中国向欧出口汽车奈雪成乐乐茶第一大股东 12 月 6 日消息&#xff0c;乐乐茶与奈雪的茶签署5.25亿元…

主成分分析-书后习题回顾总结

7-2 题目 理论基础 矩阵的特征值和特征向量的定义以及其求法 https://www.cnblogs.com/Peyton-Li/p/9772281.html 特征值和特征向量的定义&#xff1a;设AAA是nnn阶方阵&#xff0c;如果数λ\lambdaλ和nnn维非零列向量α\alphaα使关系式AαλαA\alpha\lambda\alphaAαλα成…

MyBatis一 Mybatis的介绍、基本使用、高级使用

一 数据库操作框架的历程 1.1 JDBC JDBC(Java Data Base Connection,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写…