linux环境利用docker部署springboot项目
这几天抽空整理了一下早年的笔记,这篇是关于的docker部署,希望新人可以少踩坑。
1、改pom、建Dockerfile
安装插件dockerfile-maven-plugin
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.13</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
<configuration>
<!--生成的镜像的repository信息-->
<repository>com.top.facloud/${project.name}</repository>
<tag>${project.version}</tag>
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
<!--路径为项目根目录-->
<dockerfile>Dockerfile</dockerfile>
</configuration>
</plugin>
</plugins>
</build>
新建Dockerfile
# 添加 Java 8 镜像来源
FROM java:8
# 添加参数
ARG JAR_FILE
# 添加 Spring Boot 包
ADD target/${JAR_FILE} app.jar
# 执行启动命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
开始我这么配Dockerfile,
2、安装docker for windows
开始没装docker for windows,就直接运行maven package打包,结果报错 Connect to localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed。
官网下载安装后打开,会提示 WSL 2 installation is incomplete,去下面这个网址下载微软的升级包。
wsl升级后,再运行maven package打包,发现还是会报之前的错误;如下设置后,再运行maven package打包,成功出包。
3、打可执行jar包
我开始理解的是我的windows本地,生成一个docker的镜像,再上传到linux上。实际我理解错了,windows本地生成的镜像,在docker desktop中可以看到。这个镜像在我windows上的docker上可以运行(这一点没有实操)。
我现在需要做的是打一个可执行jar包,上传到linux上,生成一个镜像。于是我把docker相关的依赖注释掉,执行maven package打包,但是打出来的jar不是可执行jar,不包含依赖文件。
父pom.xml做如下配置,再执行maven compile,再执行maven package,这时候出来的就是可执行jar。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.6.2</version>
<!--打包成可执行jar-->
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<!--<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>-->
</plugin>
</plugins>
</build>
4、生成镜像,启动容器
我把jar包上传到/mydata/facloud-gen,并在此目录下新建Dockerfile。
# 添加 Java 8 镜像来源
FROM java:8
# 添加 Spring Boot 包
ADD facloud-src-generator-1.0-SNAPSHOT.jar facloud-src-generator.jar
# 执行启动命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/facloud-src-generator.jar"]
执行下面的命令生成镜像
docker build -f ./Dockerfile -t facloud-src-generator .
执行下面的命令启动容器
docker run -id -p 8012:8012 --name facloud-src-generator facloud-src-generator
版权声明:本文所有权归作者! 商业用途转载请联系作者授权! 非商业用途转载,请标明本文链接及出处!
赞成、反驳、不解的小伙伴,欢迎一起交流!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律