一键部署应用到远程服务器,IDEA官方 Docker 插件太顶了!

Posted 码农小宋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一键部署应用到远程服务器,IDEA官方 Docker 插件太顶了!相关的知识,希望对你有一定的参考价值。

环境:

  • jdk1.8及以上。
  • Maven 3.2+
  • idea
  • docker

docker开启远程连接访问

首先我们要开启docker的远程连接访问。保证不是docker所在的服务器,也能够远程访问docker。

Linux版的docker:

1.修改​​docker.service​​文件,添加监听端口 ​​-H tcp://0.0.0.0:2375​

vi /usr/lib/systemd/system/docker.service

找到 ​​ExecStart​​,在最后面添加 ​​-H tcp://0.0.0.0:2375​​,如下图所示

一键部署应用到远程服务器,IDEA官方

2.重启docker

 systemctl daemon-reload
systemctl start docker

3.如果我们有防火前记得添加防火墙策略或者关闭防火墙。

window版docker:

在电脑左下角找到docker图标,鼠标右键选择settings。

将General菜单下的​​Expose daemon on tcp://localhost:2375 without TLS​​勾选。无需重启。

一键部署应用到远程服务器,IDEA官方

安装配置idea的docker插件

1.在​​File --> Settings --> Plugins​​ 在输入框中搜索Docker,选择并安装。安装完成后重启Docker。

一键部署应用到远程服务器,IDEA官方2.配置docker

在​​File–> Settings–>Build,Execution,Deployment​​中找到Docker

新建一个docker实例,然后在​​Engine API URL​​中将docker所在ip端口号填上,填完如果下面显示​​Connection successful​​证明连接docker成功。如果失败,可能是我们上一步docker开启远程连接未成功。

一键部署应用到远程服务器,IDEA官方我们设置完成后,回到idea主界面,可以看到页面下面有一个docker窗口。点击绿色箭头,连接docker。连接上后显示Containers和Images就是我们现在docker中已经有的容器和镜像。

一键部署应用到远程服务器,IDEA官方

创建项目,并配置

一 、 创建项目

我就以一个简单的Eureka项目演示。

File–> New -->Project --> Spring Initializr

一键部署应用到远程服务器,IDEA官方一键部署应用到远程服务器,IDEA官方一键部署应用到远程服务器,IDEA官方一键部署应用到远程服务器,IDEA官方

二、 配置项目

1.修改pom.xml文件,引入​​docker-maven-plugin​​插件相关配置. 改配置在​​<plugins>​​标签内

 <!--使用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>
<!--指定标签 这里指定的是镜像的版本,我们默认版本是latest-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!-- 指定我们项目中Dockerfile文件的路径-->
<dockerDirectory>$project.basedir/src/main/resources</dockerDirectory>

<!--指定远程docker 地址-->
<dockerHost>http://127.0.0.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>

2.配置项目的基本配置。( 这里不是重点,一笔带过)

①修改​​application.properties​​,添加项目相关信息。

#项目启动的端口号和IP地址
server.port=9090
eureka.instance.hostname=127.0.0.1

# 是否将其注册到注册中心, 如果不是集群环境,false
eureka.client.register-with-eureka=false
# 是否检索服务,单机情况下为false
eureka.client.fetch-registry=false

eureka.client.service-url.defaultZnotallow=http://$eureka.instance.hostname:$server.port/eureka/

② 找到项目启动类,添加​​@EnableEurekaServer​​注解

@EnableEurekaServer
@SpringBootApplication
public class EurekaserverApplication

public static void main(String[] args)
SpringApplication.run(EurekaserverApplication.class, args);


3.添加Dockerfile文件。

我们在​​EeurekaServer\\src\\main\\resources​​目录下,添加文件名为Dockerfile的文件。

一键部署应用到远程服务器,IDEA官方如果我们docker中没有​​java:8​​ 这个镜像,请先使用​​docker pull java:8​​,将镜像先拉下来。

FROM java:8
VOLUME /tmp
ADD *.jar app.jar
EXPOSE 9090
ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]

我们添加了一个VOLUME指向“​​/ tmp​​”的内容,因为这是Spring Boot应用程序默认为Tomcat创建工作目录的地方。效果是在“​​/var/lib/docker​​”下的主机上创建一个临时文件,并将其链接到“​​/ tmp​​”下的容器。对于我们在此处编写的简单应用程序,此步骤是可选的,但如果需要在文件系统中实际编写,则对于其他Spring Boot应用程序可能是必需的。

为了减少Tomcat的启动时间,我们添加了一个指向“​​/dev/urandom​​”的系统属性作为熵源。如果您使用Tomcat(或任何其他Web服务器)的“标准”版本,则不需要更新版本的Spring Boot。

maven打包,生成镜像

使用maven打包。我们在​​pom.xml​​中配置过,如果我们是用maven的package,那么就会自动使用Dockerfile文件进行构建。

一键部署应用到远程服务器,IDEA官方我们从控制台可以看到,已经给我构建了一个和我们项目名相同的镜像文件。

一键部署应用到远程服务器,IDEA官方我们在docker窗口可以看到,我们的镜像库中多个一个​​eurekaserver:latest​​镜像。

一键部署应用到远程服务器,IDEA官方

创建容器,项目部署到docker

我们在docker窗口中,找到我们刚才创建的镜像文件,鼠标右键,选择​​Create container​​,我们修改创建容器所需要的配置。

一键部署应用到远程服务器,IDEA官方在​​Create Docker Configuration​​弹窗中修改​​Container name​​(容器名称) ​​Bind ports​​(Ip和端口映射)

我在这里添加​​127.0.0.1:8080:9090​​. 使用本地8080端口,去访问容器的9090.

一键部署应用到远程服务器,IDEA官方我们点击Run之后,就会自动创建容器并启动。

我们可以看到在docker插件中,多出了一个​​eurekaServer​​的容器,并且启动成功,端口号为9090.

一键部署应用到远程服务器,IDEA官方访问容器中的项目

我们在前面设置的是使用8080端口,访问容器9090的项目。

我们使用​​127.0.0.1:8080​​访问项目,出现如下页面,证明项目启动成功。

一键部署应用到远程服务器,IDEA官方在这里我们基本上已经完成了所有的配置。

修改项目,一键部署

以后,我们启动项目可以按照下图所示,一键启动我们项目就会在docker容器中运行。

一键部署应用到远程服务器,IDEA官方如果我们修改了项目,在使用在docker插件中启动项目,会发现在启动依然还是修改前的项目,因为我们只是启动了容器,并没有将修改后的项目重新打包并生成docker的images。

如果我们想在启动时直接用运行打包并启动项目可以按照下面的操作。

1.我们修改在前面我们创建的​​Docker Images​​ 的配置。

一键部署应用到远程服务器,IDEA官方2.在配置启动项中找到​​Before launch:Activate tool window​​,在这里我们新增一个​​Run Maven Gold​​。

一键部署应用到远程服务器,IDEA官方3.我们在这里的​​Command line​​ 中添加一个命令 package。

一键部署应用到远程服务器,IDEA官方配置完成后保存。以后我们启动项目时都会执行maven的package命令,自动将我们打包并把项目生成docker镜像文件启动。

以后,如果我们修改项目后,都可以使用下图所示去启动。它会自动打包创建docker镜像并启动项目。

一键部署应用到远程服务器,IDEA官方如果我们只需要启动项目,到docker插件窗口,启动对应项目的容器就可以了。


以上是关于一键部署应用到远程服务器,IDEA官方 Docker 插件太顶了!的主要内容,如果未能解决你的问题,请参考以下文章

一键部署应用到远程服务器,IDEA官方 Docker 插件太顶了!

一键部署应用到远程服务器,IDEA官方 Docker 插件太顶了!

Java 开发提升十倍生产力:IDEA 远程一键部署 Spring Boot 到 Docker

docker环境安装及springboot+docker在idea上实现一键部署远程服务器

IDEA 使用 Docker 插件,实现一键自动化部署

IDEA 使用 Docker 插件,实现一键自动化部署