IDEA直连服务器,进行项目Docker部署,实现一键部署、启动

Stella981
• 阅读 665

1、前言

     在项目中使用docker后,通过docker的方式来启动系统,需要经过编译、打jar包、打镜像、启动等阶段。在各种自动化工具的出现,对打包、部署等工作带来了便利,一般都会选择git+Jenkins方式进行自动化部署。在面对本地开发调试阶段,如果过分的依赖自动化工具,会显得并不是那么的方便,比如:频繁的代码调整修改,却要进行代码的git提交、登录Jenkins进行部署,这样的频繁操作,甚至会让你发疯的。

     在开发阶段,对应开发人员接触最多的就是开发工具IDE,如:IDEA中就提供了好多不错的插件供开发人员使用。针对上述问题,IDEA也提供的一些插件来解决这类问题。

    本文主要来讲述,如何在IDEA中通过插件来部署docker项目,方便开发阶段的调试部署工作。

2、准备工作

  • Centos7 docker环境
  • IDEA开发环境
  • SpringBoot项目(其他类型的项目均可)

(如果你还不对安装docker环境,或有疑问,可参考之前的一篇文件《CentOS7 下Docker安装、启动》)

3、IDEA直连docker服务器

3.1 开启docker远程访问

为了确保本地IDEA能够访问服务器上的docker环境,则需要开发对docker的2375端口的访问权限。

(1) 打开docker服务启动配置文件/usr/lib/systemd/system/docker.service,在ExecStart=中追加-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock,如下:

IDEA直连服务器,进行项目Docker部署,实现一键部署、启动

(2) 重启docker环境

systemctl daemon-reload

systemctl start docker

(3) 关闭防火墙

关闭防火墙:

  systemctl stop firewalld.service

禁止firewall开机启动:

  ** systemctl disable firewalld.service**

(4) 本地telnet验证2375端口

在本地(即:IDEA开发环境机器)cmd中,通过telnet命令连接docker环境的2375端口,如下:

IDEA直连服务器,进行项目Docker部署,实现一键部署、启动

显示如下,则表明可以远程访问。

IDEA直连服务器,进行项目Docker部署,实现一键部署、启动

3.2 IDEA上安装docker插件

    安装Docker integration插件,如果已安装,请忽略本步骤。

    打开File->Settings->Plugins,搜索Docker,可以看见Docker integration插件,安装提示进行一步步安装,安装完毕重启IEDA。

IDEA直连服务器,进行项目Docker部署,实现一键部署、启动

重启IDEA后,打开File->Settings->Build,Execution,Deployment,如果有Docker列表,则说明插件安装成功。

IDEA直连服务器,进行项目Docker部署,实现一键部署、启动

3.3 连接配置docker服务器

    打开File->Settings->Build,Execution,Deployment->Docker,按照下图进行配置即可。

说明:步骤③ 自定义命名即可

          步骤④ 填写docker环境地址,格式为:tcp://ip:2375 URL填写完后,进行自动验证,并显示步骤⑤成功提示。

IDEA直连服务器,进行项目Docker部署,实现一键部署、启动

3.4 直连docker服务器使用

语言

方法

7729

1Wq9Ndjf37

2V164

抖音如何刷粉丝

9192

2007/11/18 02:39:35

    在IDEA中,如下图操作,即可直连docker服务器,可查看docker环境上所有镜像、容器,并支持重启、删除等一系列操作,更多功能使用时再细细挖掘吧。

IDEA直连服务器,进行项目Docker部署,实现一键部署、启动

4、IDEA中项目Docker部署

4.1 使用docker-maven-plugin插件

     在项目pom.xml中使用docker-maven-plugin插件,便可完成从编译、打包、打镜像、部署等流程。在pom.xml  ...中添加docker-maven-plugin插件配置,如下:

<!--使用docker-maven-plugin插件-->
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>1.0.0</version>

    <!--将插件绑定在某个phase执行-->
    <executions>
        <execution>
            <id>build-image</id>
            <!--将插件绑定在package这个phase上。也就是说,用户只需执行mvn package ,就会自动执行mvn docker:build-->
            <phase>package</phase>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
    </executions>

    <configuration>
        <!--指定生成的镜像名-->
        <imageName>${project.artifactId}</imageName>
        <!--指定标签-->
        <imageTags>
            <imageTag>latest</imageTag>
        </imageTags>

        <!-- 指定 Dockerfile 路径-->
        <dockerDirectory>${project.basedir}</dockerDirectory>
        <!--指定远程docker环境地址-->
        <dockerHost>http://192.168.1.1:2375</dockerHost>
        <!-- 复制jar包到docker容器指定目录配置 -->
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <!--jar包所在的路径,此处配置的 即对应target 目录-->
                <directory>${project.build.directory}</directory>
                <!-- 需要包含的jar包,这里对应的是 Dockerfile中添加的文件名 -->
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>

4.2 创建Dockerfile文件

     在工程根目录下新建Dockerfile文件,如下:

FROM openjdk:8-alpine
#拥有者
LABEL maintainer "xcbeyond"

VOLUME [ "/tmp" ]
# app.jar是你项目的jar包
COPY app.jar /app.jar
#对外暴露的端口
EXPOSE 1000

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

4.3 Build

     在IDEA的右边找到Maven Projects,找到Lifecycle,双击package打包,第一次打包比较慢,需要耐心等等。

IDEA直连服务器,进行项目Docker部署,实现一键部署、启动

看到下面就说明成功了

IDEA直连服务器,进行项目Docker部署,实现一键部署、启动

4.4 部署、启动

如下操作创建docker容器,并启动。

IDEA直连服务器,进行项目Docker部署,实现一键部署、启动

IDEA直连服务器,进行项目Docker部署,实现一键部署、启动

  • Image ID: 是打包生成的镜像名
  • Container name: 容器名字,自定义即可。
  • Bind ports: 是docker对外暴露的端口

在IDEA中部署、启动后,可登陆docker环境,通过docker ps命令可以发现容器已经启动了。

是不是很帅、很方便,具体怎么使用,就根据实际需求进行灵活使用了。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这