IDEA连接远程服务器Docker部署Spring Boot项目
开始前的准备工作
拥有一台云服务器,我的是腾讯云服务器(CentOS7)
腾讯云服务器安装Docker,我的版本是Docker 19.03.9,关于安装和配置镜像加速器可以查阅我的另一篇博文:https://www.cnblogs.com/andrew3/p/12941903.html,其中有详细的讲解
Windows上有安装IDEA
正式开始工作
第一步:配置Docker,开启远程访问(注:仅供学习参考,实际生产环境万万不可,会产生很大的安全风险),默认端口是2375,也可以修改为其他端口
1、修改/lib/systemd/system/docker.service文件
vim /lib/systemd/system/docker.service
在ExecStart后面追加 -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

修改完记得写保存退出命令 :wq
2、重新加载配置文件,重启docker,使得刚才的配置生效
#重新加载配置文件
systemctl daemon-reload
#重启docker服务
systemctl restart docker
3、使用curl命令检查是否开启
#curl下载docker的服务信息
curl http://127.0.0.1:2375/info
如果有返回说明,就证明开启成功了,可以看到我的Docker版本,镜像加速器地址等其他信息,但是这时候远程可能依然访问不了

4、配置腾讯云安全组规则,入站规则中开放2375端口,使得可以远程访问(阿里云都是一样)

最后点完成就OK了
5、检查端口是否可以远程访问,在本地浏览器输入:http://服务器IP地址:2375/info

第二步:对项目进行配置,连接远程docker
1、安装Docker插件,去Plugins搜索Docker,然后直接安装就行了,如果,这是我已经安装过的,安装完成后重启IDEA,就有docker插件了

2、配置连接远程docker,打开Docker插件,新建连接,在Engine API URL处输入服务器IP地址:2375,然后,不出意外,下方都会出现Connection successful,这样连接远程服务器的Docker就成功了

3、编辑项目pom.xml文件,在Spring Boot项目中添加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>wbb/${project.artifactId}</imageName>
<!--指定标签-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!-- 指定 Dockerfile 路径 ${project.basedir}:项目根路径下-->
<dockerDirectory>${project.basedir}</dockerDirectory>
<!--指定远程 docker api地址-->
<dockerHost>http://134.175.236.221: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>
<!-- 以下两行是为了docker push到DockerHub使用的。 -->
<!--<serverId>docker-hub</serverId>-->
<!--<registryUrl>https://index.docker.io/v1</registryUrl>-->
</configuration>
</plugin>
4、在项目根目录下创建Dockerfile文件

Dockerfile文件内容

Dockerfile保留字的解析可以查阅我的另一篇博文:https://www.cnblogs.com/andrew3/p/13033061.html,里面有常用保留字的详细解析,不过没有实例,正好可以这个Dockerfile文件进行对照理解
这个Dockerfile文件的内容大概是:
第一行:当前要创建的镜像是基于java:8这个镜像的,也就是JDK8,也就是基本的Java运行开发环境肯定要有,这个也可以提前docker pull
第二行:在构建的时候把target目录下的jar包添加到镜像中,并改名为app.jar
第三行:镜像对外开放的端口是8888,这个在后面进行端口映射的时候还要用,一定要记住,当然,没记住,也可以使用docker history命令去看
第四行:启动镜像实例容器时会自动执行:java -jar /app.jar命令,也就是启动容器时,就启动了项目,而且不会被启动容器时添加的命令参数覆盖
另外其他没指定的参数,就是默认的,比如登录容器时默认的路径是根目录
5、打包项目,同时会自动构建镜像,点击右侧的Maven Projects,然后双击package

看到如果的信息就表示构建成功了,现在就可以去服务器查看构建的容器了

第三步:启动镜像实例容器,远程访问项目,接下来的步骤可以在IDEA中直接进行,也可以在服务器上进行,为了更加熟悉docker命令,我就在服务器端演示了
关于以下用到的docker命令可以查看我的其他两篇博文:https://www.cnblogs.com/andrew3/p/12943406.html https://www.cnblogs.com/andrew3/p/12944452.html,里面有详细的docker镜像命令和容器命令的解释
1、查看所有镜像:docker images

如图所示,刚刚构建的镜像wbb/shop镜像已经存在了
2、启动容器:docker run -it -p 8889:8888 --name shop wbb/shop
启动时,这里的 -p 8889:8888 是端口映射,就是宿主机的8889端口映射到镜像的8888端口,访问宿主机的8889端口就相当于访问到镜像的8888端口,这个8888就是Dockerfile文件中写的开放的那个端口,当然,一般应该是指定-d后台运行,我指定前台交互运行,其实,就是为了看画的这个美女而已,这个身材,梦中女神啊

3、查看容器运行状态信息:docker ps

可以看到,构建的镜像实例已经运行了7分钟多了,端口映射情况,第一个是容器的ID
4、远程访问项目:http://服务器IP地址:8889/shop
在此之前,必须确保宿主机的端口8889是开放的,否则可以按照配置安全组规则放行8889端口,另外,/shop是我的项目的虚拟路径

OK,到此,使用IDEA连接远程Docker服务部署Spring Boot项目的方法就解释完了,不足之处,请多指教
附:检查端口是否开放远程访问,也可以使用在线端口扫描工具:http://www.jsons.cn/port/,输入服务器IP地址和相应的端口扫描就可以了,可以实现多个端口扫描,很方便
IDEA连接远程服务器Docker部署Spring Boot项目的更多相关文章
- Windows Docker 部署 Spring Boot 项目
目录 Docker Configuration Config IDEA Plugin Create Spring Boot Project Containerize It Use Dockerfile ...
- 使用 Docker 部署 Spring Boot 项目
Docker 介绍 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口.它是目前最流行的 Linux 容器解决方案. Docker 将应用程序与该程序的依赖,打包在一个文件里面 ...
- 使用 Docker 部署 Spring Boot 项目,带劲!!
上一篇:年轻人的第一个 Docker 应用 Docker 一次构建.处处运行及快速启停的特性,在微服务架构中有着举足轻重的地位,具体的概念性的东西就不介绍了,不懂的点击这里阅读 Docker 基础教程 ...
- 使用Docker部署Spring boot项目
Docker是一个使用广泛的Linux容器管理工具包,它允许用户创建镜像,并将其容器实例化.通过本指南,我们可以学习到如何使用Docker部署Spring Boot项目. 先决条件 开发之前,你必须具 ...
- 【docker】docker部署spring boot项目在服务器上
IDE:idea 工具:docker spring boot:2.0.1 ======================================== 简单记录一下流程,以供参考: 第一步:首先得 ...
- docker部署spring boot项目在服务器上
IDE:idea 工具:docker spring boot:2.0.1 ======================================== 简单记录一下流程,以供参考: 第一步:首先得 ...
- Docker 部署Spring Boot 项目并连接mysql、redis容器(记录过程)
Spring Boot 项目配置 将写好的Spring Boot 项目通过maven 进行package打包获得可执行Jar 再src/main/docker(放哪都行)下编写创建Dockerfile ...
- docker 部署spring.boot项目【一】(引用外部配置文件)
上一篇随笔,nginx是启动运行在容器内,spring.boot的web项目是运行在宿主内,这一篇的目的,是把web项目也制作成镜像,然后在容器里启动. 文件目录结构如下: 主要文件结构说明:(1)b ...
- 如何用Docker部署Spring Boot项目
1.idea中安装docker插件: 2.新建DockerFile,内容如下. # 基础镜像使用java FROM java:8 # 作者 MAINTAINER vic <test@163.co ...
随机推荐
- mac下charles使用
设置charles 电脑上一次性的工作 1 下载下面两个文件(这里版本自己定) a charles-proxy-4.1.4.dmg b charles4.1.4的副本.jar 2 进行charles ...
- IP协议及其它的小弟 ,我保证没人会看的
IP协议及其它的小弟 IP协议:127.0.0.1就一个32位的标识符.实际上: 类似这样的: 精神小伙慢慢看吧.我赌一包辣条你是不会认真看完的. IP协议的构成 地址解析协议 ARP 前面的叙述中我 ...
- 新能力 | 云开发CMS内容管理系统,5分钟搞定小程序管理后台
小程序·云开发的云调用能力,让用户可以免鉴权快速调用微信的开放能力,极大节约了开发成本.现在,大家期待已久的云开发 CMS 内容管理系统,终于上线啦!顺便提示,接下来还可以二次开发哦! 云开发 CMS ...
- LUNIX命令集
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户.多任务.支持多线程和多 CPU 的操作系统. Linux 能运行主要的 UNIX 工具软件 ...
- 【雕爷学编程】Arduino动手做(42)---PM2.5粉尘传感器
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备 ...
- 【蓝桥杯C/C++组】备赛基础篇之差分算法
一.个人理解 前面学习了前缀和算法,对于访问任意区间的速度是比较快的,但如果我们要修改某个区间的数呢,对于前缀和算法来说这还是有点棘手. 所以我们来学学新的算法:差分算法! 前缀和数组储存的是前n个数 ...
- 3、JSP中的Cookie 用于存储 web 页面的用户信息。
cookie 在平时生活中的运用 存储用户在网页上的登陆信息,包括账号和密码. 有的网站,登陆的时候,会出现一个选项,问你是否要一周内或者一个月内保持登陆状态.如果你选了,那么一周之内,都不需要再输入 ...
- SQL——SQL约束
SQL约束 - 用于限制加入表的数据的类型 可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句). NOT NULL ...
- SSM——[/WEB-INF/applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException; cvc-elt.1: 找不到元素 'beans' 的声明。
报错文件:/SSM_Integration/WebContent/WEB-INF/applicationContext.xml <beans xmlns="http://www.spr ...
- springboot的springMVC配置,源码
1,前端控制器自动管理 DispatcherServletAutoConfiguration 中 此方法创建了前端控制器 注册了前端控制器 其中标黄色一行最后的 .getPath()方法点进去 St ...