• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

IntelliJ IDEA极快实现SpringBoot项目打包Docker镜像并部署

武飞扬头像
SmallThanks
帮助3

大家知道SpringBoot项目可以打包成jar包直接可以运行,通过java -jar xxx.jar的命令,那么能不能实现Jenkins那种自动部署的功能,方便我们测试呢?答案是可以,笔者在公司的大佬告诉我可以利用docker实现,大致的流程将程序打包成一个docker的镜像文件,然后启动docker的镜像 docker run xxx 命令来启动,下面一起看一下简单idea配置的步骤。

一台已经安装docker的服务器(笔者是centOS)

执行以下的命令,作用开启Docker的远程访问功能。

vim /usr/lib/systemd/system/docker.service
# 修改ExecStart这行,ExecStart= xxxxx不要改变直接空格之后添加
# tcp是开启远程访问,unix是本机访问,不开启本机访问,在服务器上使用时会有以下错误
# Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
ExecStart=/usr/bin/dockerd  -H tcp://0.0.0.0:2375  -H unix:///var/run/docker.sock 

#重新加载配置文件                  
systemctl daemon-reload 
# 重启服务 
systemctl restart docker.service 
# 查看端口是否开启 默认端口2375 
netstat -nptl
#直接curl看是否生效 如果没有生效显示被拒绝,生效之后显示json
curl http://127.0.0.1:2375/info 

笔者的IDEA版本2020.3.1UE版本,默认已经安装docker的插件。版本过低的,自行Google安装。看到下图的结果证明可以连接到安装docker的服务器。表示配置没有问题,如果结果不一样从头操作一遍。

学新通

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author smallthanks
 */
@SpringBootApplication
@RestController
public class DemoApplication {

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

	@GetMapping("/index")
	public String index() {
	    return "hello world";
    }
}

按照如上代码,创建一个最简单的SpringBoot的Web项目。并在本地运行确认可以访问,确保没有问题。有问题自行Google。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <packaging>jar</packaging>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
    <repositories>
        <!--        使用阿里云的镜像-->
        <repository>
            <id>spring</id>
            <url>https://maven.aliyun.com/repository/spring</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
    <dependencies>
        ·····<!-此处为了读者简洁,省去了必要的依赖-->
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
默认的打的jar包名为
学新通
# DockerFile的文件内容为,其字段的名称及作用自行Google,并存放于上图的目录
#指定基础镜像,在其上进行定制
FROM java:8
#维护者信息
MAINTAINER SmallThanks <SmallThanks@163.com>
#这里的 /tmp 目录就会在运行时自动挂载为匿名卷,任何向 /data 中写入的信息都不会记录进容器存储层
VOLUME /tmp
#复制上下文目录下的target/demo-1.0.0.jar 到容器里
COPY /target/demo-0.0.1-SNAPSHOT.jar demo-0.0.1-SNAPSHOT.jar
#bash方式执行,使demo-1.0.0.jar可访问
#RUN新建立一层,在其上执行这些命令,执行结束后, commit 这一层的修改,构成新的镜像。
RUN bash -c "touch /demo-0.0.1-SNAPSHOT.jar"

#声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务
EXPOSE 8080

#指定容器启动程序及参数   <ENTRYPOINT> "<CMD>"
ENTRYPOINT ["java","-jar","demo-0.0.1-SNAPSHOT.jar"]

学新通

选中Edit Configurations··· 添加一个docker的运行脚本。
学新通
学新通
上面配置完成之后,我们就可以运行
学新通
访问我虚拟机的地址172.16.81.131:28080/index
学新通
我们也可以通过其他的手段实现自动部署,但我我还没学会。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfhkiak
系列文章
更多 icon
同类精品
更多 icon
继续加载