Mac 简略的 Spring boot 我的项目 (Idea 2021 配合 Docker 和 Maven)
环境概述
- Mac Big Sur 11.4
- IntelliJ IDEA 2021.1.1 (Ultimate Edition)
Docker 的装置以及在 Idea 里的配置
Docker 的装置非常简单,只须要应用 Homebrew 装置即可(没有 homebrew 能够自行搜寻装置 homebrew)
brew install --cask --appdir=/Applications docker
装置后须要点开顶部的图标,输出本机明码前方可通过命令行验证 Docker 是否装置胜利
docker --version
如果装置胜利,即可进入 Idea 软件中对 Docker 进行配置,进入 Preferences –> Editor –> Plugins,搜寻 Docker 进行装置
装置实现后进入 Preferences –> Build, Execution, Deployment –> Docker,点击加号新建一个 Docker,并尝试连贯,如连贯胜利上面会显示 Connection successful
Idea 创立新我的项目
Idea 新创建我的项目,填入名字等信息
这里 SDK 版本为 1.8,JAVA 版本为 JAVA 8 是因为目前网上的教程大多以这两个版本开发,更高的版本我没有尝试,因为放心有兼容问题
第二步是选定依赖库,因为咱们前面会依据 pom.xml 对依赖库进行更新,所以这里能够临时不选,间接点 FINISH 即可
批改 pom.xml 并更新依赖库
批改 pom.xml 文件,将所需的 docker, spring-boot-web 等依赖库增加进去,留神后面有些内容是依据我的项目的名字来决定的,如有须要能够间接复制 <properties> 标签及当前的内容对你的文件进行批改(留神 spring-boot 版本最好和你创立时设定版本统一)
<?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.5.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>docker-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>docker-demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<docker.image.prefix>springboot</docker.image.prefix>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
<version>2.5.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<!-- Docker maven plugin -->
</plugins>
</build>
</project>
批改实现后能够看到左边多了个小图标,点击即可对依赖库进行下载安装
Controller 的增加以及测试
在 src/main/java/com/example/dockerdemo 下创立一个新的文件夹 Controller
并在 Controller 下新建文件 HomeController.java,内容为:
package com.example.dockerdemo.Controller;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping;
@RestController
public class HomeController {@GetMapping("/")
public String Home() {return "Homepage";}
}
src/main/java/com/example/dockerdemo 目录下双击进入 DockerDemoApplication.java,点击左侧边绿色三角形运行服务器
若 Springboot 胜利运行,关上浏览器拜访 localhost.com:8080,便可看到如下画面:
Maven 打包以及 Dockerfile 的编写
如果后面的操作没问题的话,咱们加下来便能够试着对咱们刚刚实现的我的项目进行打包,在 Idea 里通过 Maven 对我的项目进行打包非常简单,点击最左边侧边栏 Maven 图标,点击 Lifecycle 双击 package 便可对我的项目进行打包
如果打包胜利,会在根目录 target 目录里生成一个 jar 文件
在根目录下新建文件 Dockerfile
填入以下内容,留神这里 docker-demo-0.0.1-SNAPSHOT.jar 要与打包创立的 jar 文件同名
FROM openjdk:8-jdk-alpine
VOLUME /tmp
EXPOSE 8080
ADD /target/docker-demo-0.0.1-SNAPSHOT.jar /app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
创立镜像以及运行
实现 Dockerfile 当前,间接点击左侧栏运行符号,点击 New Run Configuration
Image tag 填上你想取的镜像的名字,Run 标签下 Conatiner name 填上你想取的容器的名字(没有 Run 标签的话通过 Build 左边的 Modify options 调出)
接着点击 Bind ports 将容器和本机通过端口连接起来(没有 Bind ports 选项的话通过 Run 左边 Modify 调进去),默认的话主机和容器端口都是 8080。因而点击加号将主机和容器连接起来
接着在 Before launch 标签下点击加号,增加一个 Run Maven Goal。这样每次运行的时候就会主动打包,如不须要能够跳过这一步
Comand line 输出 clean package -f pom.xml,点击 OK
接着点击保留设置,间接运行,Idea 便会主动开始打包,创立镜像,创立容器并运行,接下来应用浏览器再次关上 localhost.com:8080
呈现以下画面便表明功败垂成!
这样咱们就构建了一个轻量级的在容器内运行的 Springboot 我的项目