Java spingboot项目 在docker运行,需要含GDAL的JDK
在一个springboot项目中,打包成jar后,需要在docker中运行!但是需要含有gdal的jdk,如何在虚拟环境中运行,保证这两个内容都有,具体实现如下:
1、项目打包
把springboot项目打包成JAR包。上传到Linux机器中,这里以这个位置举例:/home/soft/app/serverapp/jar
如果没有创建 可以使用命令创建:
mkdir -p /home/soft/app/serverapp/jar
然后把项目包放到jar目录下
2、下载gdal镜像
已测试可用下载地址:https://download.csdn.net/download/qq_43544074/90918962
可直接下载使用,是不需要积分的!
其他下载地址:Links for GDAL
3、下载JDK的压缩包(以JDK17举例)
下载地址:Java Download | Java 8, Java 11, Java 17, Java 21, Java 24 - OpenJDK Builds for Linux, Windows & macOS
下载包后上传到Linux中,这里以这个位置举例:/home/soft/app/serverapp
4、编写dockerfile文件内容
示例如下:其中 下面的 FROM gdal:3.8.5 就是上面下载的GDAL镜像
# 基础镜像
FROM gdal:3.8.5# 设置维护者信息
LABEL maintainer="ATB" \version="1.0" \description="Docker image for sa-admin Spring Boot application"# 创建必要目录(logs、文件目录等)
RUN mkdir -p /home/soft/app/serverapp/logs \/home/soft/app/serverapp/temp \/home/soft/app/serverapp/uploadPath \/usr/local/java \/home/soft/app/serverapp/skywalking/agent# jdk-17
COPY bellsoft-jdk17.0.15_10-linux-amd64-full.tar.gz /home/soft/app/serverapp/# 设置工作目录
WORKDIR /home/soft/app/serverapp# 解压压缩包到目标目录
RUN tar -xzvf /home/soft/app/serverapp/bellsoft-jdk17.0.15_10-linux-amd64-full.tar.gz -C /usr/local/java && \rm /home/soft/app/serverapp/bellsoft-jdk17.0.15_10-linux-amd64-full.tar.gz# 拷贝 Spring Boot jar 包和 config 配置(可选)
COPY ./jar/sa-admin.jar ./sa-admin.jar
# COPY ./jar/config ./config# 设置环境变量
ENV JAVA_HOME=/usr/local/java/jdk-17.0.15-full
ENV PATH=$PATH:$JAVA_HOME/binENV CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/share/javaENV SERVER_PORT=8082
# 暴露端口
EXPOSE ${SERVER_PORT}# 启动应用
ENTRYPOINT ["java","-jar","sa-admin.jar"]
5、编译镜像
docker build -t sa-serverapp:1.0 .
6、运行镜像服务
docker run -d --name sa-serverapp1 \-p 8082:8082 \-v /home/soft/app/serverapp/logs:/home/soft/app/serverapp/logs \-v /home/soft/app/serverapp/temp:/home/soft/app/serverapp/temp \-v /home/soft/app/serverapp/uploadPath:/home/soft/app/serverapp/uploadPath \sa-serverapp:1.0
可以查询日志:docker logs sa-serverapp1 实时日志:docker logs -f sa-serverapp1
停止服务:docker stop sa-serverapp1 开启服务:docker start sa-serverapp1
删除服务:docker rm sa-serverapp1 查看进行:docker ps 或者 docker ps -a
至此就可以运行一个springboot的项目,然后在包含GDAL的JDK 中运行。