开始前的准备工作

拥有一台云服务器,我的是腾讯云服务器(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项目的更多相关文章

  1. Windows Docker 部署 Spring Boot 项目

    目录 Docker Configuration Config IDEA Plugin Create Spring Boot Project Containerize It Use Dockerfile ...

  2. 使用 Docker 部署 Spring Boot 项目

    Docker 介绍 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口.它是目前最流行的 Linux 容器解决方案. Docker 将应用程序与该程序的依赖,打包在一个文件里面 ...

  3. 使用 Docker 部署 Spring Boot 项目,带劲!!

    上一篇:年轻人的第一个 Docker 应用 Docker 一次构建.处处运行及快速启停的特性,在微服务架构中有着举足轻重的地位,具体的概念性的东西就不介绍了,不懂的点击这里阅读 Docker 基础教程 ...

  4. 使用Docker部署Spring boot项目

    Docker是一个使用广泛的Linux容器管理工具包,它允许用户创建镜像,并将其容器实例化.通过本指南,我们可以学习到如何使用Docker部署Spring Boot项目. 先决条件 开发之前,你必须具 ...

  5. 【docker】docker部署spring boot项目在服务器上

    IDE:idea 工具:docker spring boot:2.0.1 ======================================== 简单记录一下流程,以供参考: 第一步:首先得 ...

  6. docker部署spring boot项目在服务器上

    IDE:idea 工具:docker spring boot:2.0.1 ======================================== 简单记录一下流程,以供参考: 第一步:首先得 ...

  7. Docker 部署Spring Boot 项目并连接mysql、redis容器(记录过程)

    Spring Boot 项目配置 将写好的Spring Boot 项目通过maven 进行package打包获得可执行Jar 再src/main/docker(放哪都行)下编写创建Dockerfile ...

  8. docker 部署spring.boot项目【一】(引用外部配置文件)

    上一篇随笔,nginx是启动运行在容器内,spring.boot的web项目是运行在宿主内,这一篇的目的,是把web项目也制作成镜像,然后在容器里启动. 文件目录结构如下: 主要文件结构说明:(1)b ...

  9. 如何用Docker部署Spring Boot项目

    1.idea中安装docker插件: 2.新建DockerFile,内容如下. # 基础镜像使用java FROM java:8 # 作者 MAINTAINER vic <test@163.co ...

随机推荐

  1. javaweb学习之路(1)request

    1.本次练习写一个简单的注册页面 准备工作:首先搭建好服务器tomcat环境,使用的编译软件是eclipse 2.在eclipse中创建一个web工程 3.在webContent文件夹下创建一个reg ...

  2. Codeforces 832D(Misha, Grisha and Underground,LCA)

    题意:在一棵生成树上,给出了三个点,求三个点之间最大的相交点数,CF难度1900. 题解:求出三个lca,并取深度最大的那个,就是我们要的三岔路口K,然后分别求出K到a,b,c三点的路径长度,取最大值 ...

  3. ⚠ | 不要再使用 markdown 主题了!

    前置 我在很久之前就发现了使用第三方 markdown 主题将产生一个的问题,今日在社区发现依然有人写文章来推荐这种做法.接下来我告诉你为什么最好不要这样做以及分享一些 markdown 技巧.若有不 ...

  4. react-debug

    最近练习react的时候遇到一些问题: 在redux模式下,同一个api依据参数获取不同data的时候,返回的data相同 原因:多次调用该接口时,action的type相同,导致对应于该接口的每个r ...

  5. 详细讲解使用Sublime Text 3进行Markdown编辑和实时预览

    所需安装的插件 Markdown Editing // Markdown编辑和语法高亮 Markdown Preview// Markdown导出html预览 LiveReload// 时时预览 安装 ...

  6. MVC4.0接口学习

    /// <summary> /// 正则验证身份证号是否合法 /// </summary> /// <param name="sIdCard"> ...

  7. 推荐一款复式记账软件——GnuCash

    本文需要搞清楚两个事情,第一,什么是复式记账:第二,GnuCash操作 复式记账,来自百度百科的解释:复式记账法是以资产与权益平衡关系作为记账基础,对于每一笔经济业务,都要以相等的金额在两个或两个以上 ...

  8. HDU6097 Mindis

    题目链接:https://cn.vjudge.net/problem/HDU-6097 知识点: 计算几何.圆的反演 题目大意: 已知一个圆心在原点的圆的半径,再给定 \(P, Q\) 两点坐标( \ ...

  9. 蓝桥杯 试题 历届试题 发现环 并查集+dfs

    问题描述 小明的实验室有N台电脑,编号1~N.原本这N台电脑之间有N-1条数据链接相连,恰好构成一个树形网络.在树形网络上,任意两台电脑之间有唯一的路径相连. 不过在最近一次维护网络时,管理员误操作使 ...

  10. SEPC:使用3D卷积从FPN中提取尺度不变特征,涨点神器 | CVPR 2020

    论文提出PConv为对特征金字塔进行3D卷积,配合特定的iBN进行正则化,能够有效地融合尺度间的内在关系,另外,论文提出SEPC,使用可变形卷积来适应实际特征间对应的不规律性,保持尺度均衡.PConv ...