构建Demo项目

使用IDEA的Spring Initializr创建一个SpringBoot项目,添加Spring Web。

注意SpringBoot v3.0.0 以后最低支持JDK17,如果你使用JDK8,请降低版本到v3以下

贴出我的pom中部分配置

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

编写Hello World Controller

@RestController
public class HelloController {

@RequestMapping("/hello")
public String hello() {
return "Hello World!";
}
}

访问测试:http://localhost:8080/hello

打包应用

使用maven打包项目

进入target目录,运行项目

java -jar demo-0.0.1-SNAPSHOT.jar

访问测试:http://localhost:8080/hello

编写dockerfile

直接在IDEA中右键项目,新建文件Dockerfile,IDEA可以提示代码。

写入下面内容

FROM java:8
COPY *.jar /app.jar

CMD ["--server.port=8080"]
EXPOSE 8080

ENTRYPOINT ["java", "-jar", "/app.jar"]

构建镜像

将编写的Dockerfile和target中的jar包上传到服务器上

[root@swcode idea]# ll
total 17224
-rw-r--r-- 1 root root 17633212 Feb 17 15:46 demo-0.0.1-SNAPSHOT.jar
-rw-r--r-- 1 root root 112 Feb 17 15:46 Dockerfile

构建镜像

docker build -t idea-demo .

如果构建过程中报错

manifest for java:8 not found: manifest unknown: manifest unknown

把Dockerfile文件里面的 FROM java:8 改为 FROM openjdk:8

查看创建的镜像

[root@swcode idea]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
idea-demo latest 1e0b48277189 6 seconds ago 544MB
openjdk 8 b273004037cc 6 months ago 526MB

发布运行

运行镜像

docker run -d -P --name idea-springboot-web idea-demo

查看分配的端口,32776对应8080

[root@swcode idea]# docker ps
CONTAINER ID IMAGE PORTS NAMES
3b753f588a29 idea-demo 0.0.0.0:32776->8080/tcp idea-springboot-web

访问项目

[root@swcode idea]# curl localhost:32776
{"timestamp":"2023-02-17T07:54:21.790+00:00","status":404,"error":"Not Found","path":"/"}
[root@swcode idea]# curl localhost:32776/hello
Hello World!

浏览器输入:ip:32776/hello 即可访问