环境概述
- 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项目