java springboot结合gdal打包docker镜像

7 篇文章 0 订阅
7 篇文章 0 订阅
步骤1 创建DockerFile文件
# 基于某个源镜像 这里需要java+gdal 3.2.0 环境 所以不是openjdk
FROM projectairws/gdaljava:latest

#维护者信息
MAINTAINER WRY

ADD *.jar app.jar
ENTRYPOINT ["java","-Dspring.profiles.active=dev","-jar","/app.jar"]
#暴露的端口
EXPOSE 9889
步骤2 项目中加入gdal加载配置的文件

2.1 引入依赖:

<dependency>
    <groupId>org.gdal</groupId>
    <artifactId>gdal</artifactId>
    <version>3.2.0</version>
</dependency>

2.2 项目中加入以下代码用于项目启动时动态加载gdal

import cn.hutool.core.util.ClassUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.gdal.gdal.gdal;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.io.File;
import java.io.IOException;

/**
 * @author : ruoyu
 * @date : 2023/1/11
 */
@Component
@Slf4j
public class GdalLoaderEngine {

    private static final String DefaultOsPath = "gdal.os.path";

    /**
     * gdal环境初始化
     */
    @PostConstruct
    public void init() {
        //1.尝试从变量中获取gdal.os.path
        String property = System.getProperty(DefaultOsPath);
        boolean isOk = false;
        boolean isWin = false;
        if (StringUtils.isNotBlank(property)) {
            log.info("-------GdalLoaderEngine1-------尝试从[{}]中获取gdal配置文件", property);
            isOk = loadGdal(property);
        }
        //4.如果是Linux环境最后还没有则从/usr/lib 中加载
        if (!isOk && !System.getProperty("os.name").toLowerCase().contains("win")) {
            String filePath = "/usr/lib"+ "/libgdaljni.so";
            log.info("-------GdalLoaderEngine4.1-------尝试从[{}]中获取gdal配置文件", filePath);
            isOk = loadGdal(filePath);
            if(!isOk){
                filePath="/usr/lib"+ "/libgdalalljni.so";
                log.info("-------GdalLoaderEngine4.2-------尝试从[{}]中获取gdal配置文件", filePath);
                isOk = loadGdal(filePath);
            }
        }

        //如果还没获取到配置文件 则打印错误日志
        if (!isOk) {
            log.error("-------GdalLoaderEngine-------获取gdal环境失败!!,请检查配置文件!!");
        } else {
            //注册gdal驱动
            gdal.AllRegister();
            log.info("-------GdalLoaderEngine------- 加载配置成功");
        }
    }

    private static boolean loadGdal(String gdalPath) {
        File file = new File(gdalPath);
        if (!file.exists()) {
            return false;
        }
        try {
            //加载驱动
            System.load(file.getAbsolutePath());
        } catch (Exception e) {
            return false;
        }
        return true;
    }
}
步骤3 打包运行

3.1 把Dockerfile 与 项目jar包放置同一目录
3.2 执行:docker构建镜像

docker build -t {自定义名称}:{自定义版本} .

3.3 像往常正常启动镜像执行启动

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Springboot整合GDAL需要进行以下几个步骤。首先,确保你已经安装了Java Development Kit (JDK),并将GDAL的相关文件复制到JDK的bin文件夹中,而不是JRE的bin文件夹中。然后,在你的Springboot项目的pom.xml文件中添加GDAL的Maven依赖项。例如,可以添加以下依赖项: ```xml <dependency> <groupId>org.gdal</groupId> <artifactId>gdal</artifactId> <version>3.5.0</version> </dependency> ``` 接下来,在你的Springboot项目中使用GDAL的API进行相关操作。你可以通过导入相应的GDAL类来使用它的功能。例如,可以使用以下代码测试GDAL是否成功集成到项目中: ```java import org.gdal.gdal.gdal; import org.gdal.ogr.ogr; int count = ogr.GetDriverCount(); System.out.println(count); for(int i=0; i<count; i++) { System.out.println(ogr.GetDriver(i).GetName()); } gdal.GDALDestroyDriverManager(); ``` 以上代码会输出GDAL驱动程序的数量以及每个驱动程序的名称。如果输出结果正常,说明GDAL已成功集成到你的Springboot项目中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Springboot 集成GDAL开发环境配置](https://blog.csdn.net/GISuuser/article/details/126417298)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值