WBlog

哀吾生之须臾,羡长江之无穷

0%

dev-ops 第5节:服务镜像构建和容器部署

dev-ops 第5节:服务镜像构建和容器部署

Maven插件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>chatgpt.Application</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>

这个<plugin>标签定义了一个 Maven 插件,名为 spring-boot-maven-plugin。这个插件是 Spring Boot 提供的,用于支持 Spring Boot 项目的构建和打包。 具体来说,这个插件的功能包括:

  1. <mainClass>chatgpt.Application</mainClass>:这个配置指定了应用程序的主类,也就是包含 main 方法的类。当你运行打包后的 JAR 文件时,这个类的 main 方法会被执行。
  2. <goal>repackage</goal>:这个目标会在构建过程中被执行。repackage 目标会创建一个可执行的 JAR 文件,这个 JAR 文件包含了你的应用程序和所有的依赖库。这样,你就可以使用 java -jar 命令来运行你的应用程序,而不需要单独安装任何依赖库。
    总的来说,spring-boot-maven-plugin 插件让你可以很容易地创建和运行 Spring Boot 应用程序的可执行 JAR 文件。

Maven操作

插件添加后刷新,然后mvn clean+mvn install

image-20240515145416040

完成后进行package

image-20240515145456977

之后我们会在项目根目录下得到target文件夹,将其中的jar包(不带original)的拷出来放到linux服务器上的某个文件夹,我这里放到了/data/java/chatgpt-api

文件夹中,在放到远程服务器之前可以先在本地使用java -jar命令运行一下试试,注意jdk版本是1.8。

image-20240515150112905

Docker部分

首先在这个文件夹下建立Dockerfile文件

写入如下内容

1
2
3
4
5
6
7
8
# 使用官方的 Java 运行时作为基础镜像
FROM openjdk:8-jdk-alpine

# 将本地文件 target/chatgpt-api-0.0.1-SNAPSHOT.jar 复制到容器的 /app.jar
COPY chatgpt-api-0.0.1-SNAPSHOT.jar app.jar

# 设置容器的默认启动命令
ENTRYPOINT ["java","-jar","/app.jar"]

之后运行指令构建镜像

1
docker build -t chatgpt-api .

之后启动镜像

1
docker run -d -p 8080:8080 --name chatgpt-api chatgpt-api

此时用docker ps -a查看是否正常运行

image-20240515150405786

此时我们可以使用postman等工具进行测试

image-20240515150436491

测试成功!