IDEA使用Docker插件构建镜像
IDEA使用Docker插件构建镜像
记一次坑 第一次插件docker-maven-plugin的 配置文件中没写远程主机的地址 <dockerHost>http://192.168.128.3:2375</dockerHost>-->
在idea的setting 中设置了,以为这里不用配置了,结果掉进坑了



<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<!--将插件绑定在某个phase执行-->
<executions>
<execution>
<id>build-image</id>
<!--用户只需执行mvn package ,就会自动执行mvn docker:build-->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions> <configuration>
<!--指定生成的镜像名-->
<imageName>lxcuaa</imageName>
<!--指定标签 这里指定的是镜像的版本,我们默认版本是latest-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags> <!--指定基础镜像jdk1.8-->
<baseImage>openjdk:8-jdk-alpine</baseImage>
<baseImage>java:8</baseImage>
<!-- 镜像制作人本人信息-->
<maintainer>chong@email.com</maintainer> <!-- 结合dockerfile 构建,不需要指定基础镜像,暴露端口,因为在Dockerfilr中指定-->
<!--<dockerDirectory>Dockerfile的路径</dockerDirectory>--> <!--指定登录容器默认到/目录-->
<workdir>/</workdir>
<!-- 构建镜像的时候需要在镜像容器中运行的 linux命令 -->
<!-- <runs>-->
<!-- <run>-->
<!-- </run>-->
<!-- </runs>--> <!--查看我们的java版本-->
<cmd>["java", "-version"]</cmd>
<!--${project.build.finalName}.jar是打包后生成的jar包的名字 -Duser.timezone=GMT+8 :设置时区同步(项目时间为东八区标准时间)-->
<entryPoint>["java","-Duser.timezone=GMT+8", "-jar", "/${project.build.finalName}.jar"]</entryPoint> <!--指定远程 docker api地址(docker服务器的ip+docker的远程端口)-->
<dockerHost>http://192.168.128.3:2375</dockerHost> <!--容器服务的端口(暴露的端口)-->
<!-- <exposes>86</exposes>--> <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
<resources>
<resource>
<targetPath>/</targetPath>
<!--jar 包所在的路径 此处配置的 即对应 target 目录-->
<!-- <directory>${project.build.directory}</directory>-->
<directory>${project.build.directory}</directory>
<!--用于指定需要复制的文件 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
<!-- <include>${project.build.finalName}.jar</include>-->
<include>cccdemo.jar</include>
</resource>
</resources>
</configuration>
</plugin>

一、开启Docker远程访问
如果使用idea编辑器的话,可以使用docker插件来远程使用服务器(虚拟机)上的docker,简单方便快捷的使用docker,更重要的是使用插件可以实现项目的一键部署,当然这还需要一些简单的配置。
默认的dokcer是不支持远程访问的,需要加点配置,开启Docker的远程访问
- #修改Docker服务文件,需要先切换到root用户
- vim /lib/systemd/system/docker.service
- #注释掉"ExecStart"这一行,并添加下面这一行信息
- ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
重新加载配置文件
- #重新加载配置文件
- systemctl daemon-reload
- #重启服务
- systemctl restart docker.service
- #查看配置的端口号(2375)是否开启(防火墙必须放开docker远程端口)
二、连接docker
使用idea的docker插件连接docker,idea默认已经下载过docker插件了,如果没有的话,需要在idea下载docker插件

点击idea的设置选项(file --> setting -> docker),新建连接

连接成功之后就可以使用服务器(虚拟机)上的docker了
三、镜像的拉取
idea可以通过可视化的方式拉取镜像,不用自己去敲命令


有时候会出现拉取的时间超时的情况,可以配置一下国内的镜像获取阿里云的加速器
四、容器的创建与运行
创建并且运行docker容器

创建成功之后可以看到新创建的容器,也可以在服务器(虚拟机)上用docker命令查看
重启容器、停止容器和删除容器等操作
五、docker一键部署springboot项目
传统的docker部署springboot项目,需要自己手动配置Dockerfile文件,还需要将生成的jar包跟Dockerfile文件一起上传到服务器,整个流程下来很麻烦,如果用idea的docker插件就可以实现一键部署springboot项目,简单方便。
maven项目中:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<!--将插件绑定在某个phase执行-->
<executions>
<execution>
<id>build-image</id>
<!--用户只需执行mvn package ,就会自动执行mvn docker:build-->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions> <configuration>
<!--指定生成的镜像名-->
<imageName>lxcuaa</imageName>
<!--指定标签 这里指定的是镜像的版本,我们默认版本是latest-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags> <!--指定基础镜像jdk1.8-->
<baseImage>openjdk:8-jdk-alpine</baseImage>
<baseImage>java:8</baseImage>
<!-- 镜像制作人本人信息-->
<maintainer>chong@email.com</maintainer> <!-- 结合dockerfile 构建,不需要指定基础镜像,暴露端口,因为在Dockerfilr中指定-->
<!--<dockerDirectory>Dockerfile的路径</dockerDirectory>--> <!--指定登录容器默认到/目录-->
<workdir>/</workdir>
<!-- 构建镜像的时候需要在镜像容器中运行的 linux命令 -->
<!-- <runs>-->
<!-- <run>-->
<!-- </run>-->
<!-- </runs>--> <!--查看我们的java版本-->
<cmd>["java", "-version"]</cmd>
<!--${project.build.finalName}.jar是打包后生成的jar包的名字 -Duser.timezone=GMT+8 :设置时区同步(项目时间为东八区标准时间)-->
<entryPoint>["java","-Duser.timezone=GMT+8", "-jar", "/${project.build.finalName}.jar"]</entryPoint> <!--指定远程 docker api地址(docker服务器的ip+docker的远程端口)-->
<dockerHost>http://192.168.128.3:2375</dockerHost> <!--容器服务的端口(暴露的端口)-->
<!-- <exposes>86</exposes>--> <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
<resources>
<resource>
<targetPath>/</targetPath>
<!--jar 包所在的路径 此处配置的 即对应 target 目录-->
<!-- <directory>${project.build.directory}</directory>-->
<directory>${project.build.directory}</directory>
<!--用于指定需要复制的文件 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
<!-- <include>${project.build.finalName}.jar</include>-->
<include>cccdemo.jar</include>
</resource>
</resources>
</configuration>
</plugin>
ok,接下来只要先点击clean清除之前的所有打包的文件,然后再点击package打包文件即可完成镜像的构建,真正的一键部署
建,真正的一键部署

到此镜像构建成功,接下来只要创建容器跑起来即可

通过ip访问
IDEA使用Docker插件构建镜像的更多相关文章
- Jib插件构建镜像push到阿里云镜像仓库
一.前言 Jib:Google开源的Java容器化工具 可作为插件快速集成到项目中,构建镜像,实现 Java 应用容器化 下面贴出一张从网上看到的Jib描述~ 二.利用Jib插件构建镜像push到阿里 ...
- docker入门——构建镜像
前面我们已经介绍了如何拉取已经构建好的带有定制内容的Docker镜像,那么如何构建自己的镜像呢? 构建Docker镜像有以下两种方法: 使用docker commit命令. 使用docker buil ...
- docker之构建镜像
构建Docker镜像有以下两种方法: 使用docker commit命令. 使用docker build命令和 Dockerfile 文件. 在这里并不推荐使用docker commit来构建镜像,而 ...
- docker学习构建镜像---第三章节
一.docker镜像使用 运行docker容器时,使用的镜像如果在本地不存在,docker会自动从docker镜像仓库中下载,默认是从docker hub公共镜像源下载 在这里,我们需要了解:管理和使 ...
- docker(四) 使用Dockerfile构建镜像
下面以一个例子来演示构建镜像的过程. #在/tmp目录下演示 cd tmp mkdir build-redis-image 1.创建Dockerfile文件 vim Dockerfile 并写入如下内 ...
- Docker:dockerfile自动构建镜像 [六]
一.手动docker镜像的缺点 相对于手动制作的docker镜像,使用dockerfile构建的镜像有以下优点: 1.dockerfile只有几kb,便于传输 2.使用dockerfile构建出来的镜 ...
- docker 构建镜像 centos7 nginx php
#docker 构建镜像(Dockerfile) centos 7.4.1078镜像制作 nginx镜像制作(以前面centos7镜像为基础) Nginx+php镜像制作 更多操作实例,查看git里的 ...
- idea使用docker插件
idea使用docker插件 接着上一篇docker开启远程访问后,我们就可以通过idea使用docker插件把项目部署到docker了. 首先我们先在idea安装docker插件: 在setting ...
- Docker开启远程连接,本地IDEA使用docker插件连接(不认证的版本和认证的版本都有)
前言 在学校学习的时候,要部署一个Java程序,一般是打成war包,放到服务器上的tomcat的webapp里面去: 后来SpringBoot出现内置了tomcat,就直接打成jar包,丢到服务器任何 ...
随机推荐
- MySQL架构原理之存储引擎InnoDB线程模型
如下图示,为InnoDB线程模型示意图: 1.IO Thread 在InnoDB中使用了大量的AIO(Async IO)来做读写处理,这样可以极大提高数据库的性能.其提供了write/read/ins ...
- CPU优化上下文切换之线程上下文切换案例分析
对于线程上下文切换,如果同进程内就是只是线程上下文切换,如果非同进程内则是进程上下文切换.下面进行线程上下文切换场景模拟. 一.环境准备~模拟工具sysbench. 1)安装git yum -y in ...
- OC之判断数组最大最小值
超简单的筛选方法 array为你筛选的数组 NSNumber * max = [Array valueForKeyPath:@"@max.floatValue"]; NSNumbe ...
- 使用fireworks解决图片隐写的问题
同样也可以用ps来解决图层间隐写的问题
- 给bootstrap-table填坑
由于设计变更,需要把数据由分页展示改为全部展示(才3500条数据),结果chrome浏览器页面卡顿,火狐浏览器直接卡死! console.time分析之后,竟然是bootstrap-table插件的坑 ...
- python3 使用OpenCV计算滑块拼图验证码缺口位置
前言 滑块拼图验证码的失败难度在于每次图片上缺口位置不一样,需识别图片上拼图的缺口位置,使用python的OpenCV库来识别到 环境准备 pip 安装 opencv-python pip insta ...
- Word:在文中插入对参考文献的引用
1.工具栏→插入→交叉引用 2."交叉引用"工具栏 引用类型:编号项: 引用内容:段落编号 选中要引用的参考文献编号 3.结果
- 【故障公告】龙卷风来袭:突增的并发请求,撑不住的CPU
(上图是数据库连接数监控图) 非常抱歉,今天下午 16:50-17:40 期间,一场龙卷风突袭园子,突增的并发请求狂卷博客站点的 pod,由于风力巨大(70%左右的增量),pod 的 cpu 不堪重负 ...
- TCC分布式事框架务详解
之前网上看到很多写分布式事务的文章,不过大多都是将分布式事务各种技术方案简单介绍一下.很多朋友看了还是不知道分布式事务到底怎么回事,在项目里到底如何使用. 所以这篇文章,就用大白话+手工绘图,并结合一 ...
- 分享自研实现的多数据源(支持同DB不同表、跨DB表、内存数据、外部系统数据等)分页查询工具类实现原理及使用
思考: 提起分页查询,想必任何一个开发人员(不论是新手还是老手)都能快速编码实现,实现原理再简单不过,无非就是写一条SELECT查询的SQL语句,ORDER BY分页排序的字段, 再结合limit ( ...
https://blog.csdn.net/caidingnu/article/details/109279904
103
收藏 1