前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IDEA直连服务器,进行项目Docker部署,实现一键启动

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

作者头像
xcbeyond
发布2020-04-01 19:35:24
2.8K0
发布2020-04-01 19:35:24
举报
文章被收录于专栏:技术那些事技术那些事

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,如下:

(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端口,如下:

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

3.2 IDEA上安装docker插件

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

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

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

3.3 连接配置docker服务器

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

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

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

3.4 直连docker服务器使用

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

4、IDEA中项目Docker部署

4.1 使用docker-maven-plugin插件

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

代码语言:javascript
复制
<!--使用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文件,如下:

代码语言:javascript
复制
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打包,第一次打包比较慢,需要耐心等等。

看到下面就说明成功了

4.4 部署、启动

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

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

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

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

参考: https://github.com/spotify/docker-maven-plugin#specify-build-info-in-the-pom

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序猿技术大咖 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档