简介
由于本人开发环境是 windows,但是生产环境是 linux,应用开发完后需要打包并构建 docker 镜像,但是我不想在本地安装 docker,于是便使用远程的 docker 进行处理,以下是具体的步骤。
步骤
开启远端 docker 的访问接口
本文以 linux 环境下的配置为例,执行以下命令编辑配置文件:
vim /usr/lib/systemd/system/docker.service
在 execstart 后面添加一行(表示启动2375端口用于监听远程操作)
-h tcp://0.0.0.0:2375 -h unix://var/run/docker.sock
执行以下命令重启 docker 服务
systemctl daemon-reload && systemctl restart docker
系统中添加环境变量
系统中添加以下环境变量:
名称:docker_host 值:tcp://你 docker 所在的ip地址:上一步中配置的端口
如果这时候你的 idea 还是打开的,那么你需要关掉重启 idea,否则环境变量的配置可能不会生效,或者你也可以直接使用命令的方式打包
配置插件
配置 springboot 打包插件和 docker 插件,由于我的项目中在父级的 pom 文件中已经配置了插件版本管理,所以这里使用的插件是不需要 version 的,具体可以查询 pluginmanagement 这个关键字查看相关博文,这里不再赘述。
<build> <!--应用程序打包后生成的 jar 名称--> <finalname>your-app-name</finalname> <plugins> <plugin> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-maven-plugin</artifactid> <!--需要加这个,不然打包镜像找不到启动文件--> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> <configuration> <addresources>true</addresources> </configuration> </plugin> <plugin> <groupid>com.spotify</groupid> <artifactid>dockerfile-maven-plugin</artifactid> <configuration> <repository>cloud/${project.artifactid}</repository> <buildargs> <!--应用打包后jar所在的地方,默认是在target里面--> <jar_file>target/${project.build.finalname}.jar</jar_file> </buildargs> </configuration> </plugin> </plugins> </build>
编写 dockerfile 文件
在你需要构建镜像的应用的 pom 文件相同的目录下,创建一个名为 dockerfile 的文件,其内容如下:
from eclipse-temurin:17 copy target/your-app-name.jar your-app-name.jar entrypoint ["java","-jar","/your-app-name.jar"]
第一行表示基于 jdk 17 镜像;
第二行的 copy,表示复制你打包好的 jar 包到镜像中,这里的配置要和上一步骤中 pom 文件的配置吻合;
第三行表示容器启动后运行的命令,这里简单使用 java -jar 运行应用即可。
构建
首先打包你的程序,由于本人比较懒,就不使用命令的方式打包和构建了,以 idea 为例,找到你要打包的模块,点击 package,这样就会在 target 文件夹中生成一个jar包,如下图所示,:
接着找到下面的插件,找到dockerfile,build,这样会调用远程的 docker 进行构建,镜像也会保存到远程的 docker 中,如下图所示:
看到控制台中出现下面这样的 build success 就算是成功了:
接着我们去远程的 docker 查询镜像,可以看到镜像已经被构建好了:
到此这篇关于使用maven和远程docker基于dockerfile构建springboot应用镜像的文章就介绍到这了,更多相关springboot应用镜像内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论