在一个springboot项目中,打包成jar后,需要在docker中运行!但是需要含有gdal的jdk,如何在虚拟环境中运行,保证这两个内容都有,具体实现如下:
1、项目打包
把springboot项目打包成JAR包。上传到Linux机器中,这里以这个位置举例:/home/soft/app/serverapp/jar
如果没有创建 可以使用命令创建:
bash
mkdir -p /home/soft/app/serverapp/jar
然后把项目包放到jar目录下
2、下载gdal镜像
已测试可用下载地址:https://download.csdn.net/download/qq_43544074/90918962

可直接下载使用,是不需要积分的!
其他下载地址:Links for GDAL
3、下载JDK的压缩包(以JDK17举例)

下载包后上传到Linux中,这里以这个位置举例:/home/soft/app/serverapp
4、编写dockerfile文件内容
示例如下:其中 下面的 FROM gdal:3.8.5 就是上面下载的GDAL镜像
bash
# 基础镜像
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/bin
ENV CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/share/java
ENV SERVER_PORT=8082
# 暴露端口
EXPOSE ${SERVER_PORT}
# 启动应用
ENTRYPOINT ["java","-jar","sa-admin.jar"]
5、编译镜像
bash
docker build -t sa-serverapp:1.0 .
6、运行镜像服务
bash
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 中运行。