Gdal4Java Docker镜像创建
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Gdal4Java Docker镜像创建,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4536字,纯文字阅读大概需要7分钟。
内容图文
本想在alpine极小容器里编译gdal,打包一个最小的gdal4java的镜像,总是有问题
内容目录
1、失败方案1.1 alpine1.2 ubuntu2、成功方案2.1 ubuntu jave82.2 安装gdal4java2.3 java控制台程序测试2.4 gdal离线镜像2.5 第三方包管理
1、失败方案
1.1 alpine
参考这个,但我想要gdal4java的环境,这个仓库里没找到。
https://blog.csdn.net/this_is_id/article/details/90746668
FROM?alpine:3.9
MAINTAINER?LLC
RUN?echo?"http://mirrors.aliyun.com/alpine/v3.9/main/"?>?/etc/apk/repositories?&&?\
????echo?"https://mirrors.aliyun.com/alpine/edge/testing/"?>>?/etc/apk/repositories?&&?\
????\
????apk?add?--no-cache?gcc?g++?python3?python3-dev?linux-headers?libc-dev?&&?\
????apk?add?--no-cache?bash?bash-doc?bash-completion?&&?\
????apk?add?--no-cache?geos?geos-dev?proj4?proj4-dev?&&?\
????apk?add?--no-cache?gdal?gdal-dev?&&?\
????\
????pip3?install?supervisor?gdal==2.4.0?-i?http://pypi.douban.com/simple?--trusted-host?pypi.douban.com?&&?\
????\
????echo_supervisord_conf?>?/etc/supervisord.conf?&&?\
????echo?"[include]"?>>?/etc/supervisord.conf?&&?\
????echo?"files?=?/etc/supervisord.d/*.conf"?>>?/etc/supervisord.conf?&&?\
????\
????rm?-rf?/var/cache/apk/*?&&?\
????rm?-rf?~/.cache/pip/*
ENTRYPOINT?["supervisord",?"-n","-c",?"/etc/supervisord.conf"]
自己编译源码就出现下面这个问题绕不过去,无奈放弃
查看容器操作系统
cat?/etc/issue
图片 图片
1.2 ubuntu
网上使用ubuntu挺多,使用ubuntu编译下试下也是同样的问题。ubuntu镜像可以从dockerhub拉最新的
https://blog.csdn.net/wjdhnn/article/details/105974142
注意proj-6.3.1.zip不存在,改用proj-6.3.1.tar.gz包
2、成功方案
安装python的参考这个
https://www.jianshu.com/p/8cfada816e13
java的我主要参考这个
https://zhuanlan.zhihu.com/p/108808327?utm_source=wechat_session
但也有不少改动。
2.1 ubuntu jave8
启动ubuntu容器,从oracle官网上下载jdk-8u281-linux-x64.tar.gz,拷贝到容器里解压缩就行
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
tar?-zxvf?jdk-8u281-linux-x64.tar.gz
配置java环境变量
图片将下面放在/etc/profile最后。为了每次进入容器都生效,在~/.bashrc最后添加上source /etc/profile
export?JAVA_HOME=/dengyang/jdk1.8.0_281
export?JRE_HOME=$JAVA_HOME/jreexport?CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export?PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
然后java -v就会出现版本。图片忘截了,意会一下。
2.2 安装gdal4java
我只装了libgdal-jave就行了。文章中说的gdal-bin和libgdal-dev没装,最终镜像会少个200M左右
apt-get?update
apt-get?install?libgdal-java
然后gdal Java接口文件路径就在
/usr/lib/jni/libgdaljni.so
相应的gdal.jar好像在/usr/share/java下,或者可以搜索一下
find?/?-name?gdal.jar
使用docker命令将这个gdal.jar包拷贝出去,我们开发jave程序需要使用这个jar包,这里面只有方法的签名
docker?cp?容器id或名称:/path/filename?/path/filename
补充一步,将java接口文件libgdaljni.so,拷贝到/urs/lib下,不然运行时候会报错找不到libgdaljin
图片2.3 java控制台程序测试
写个简单的java控制台程序 测试一下,windows下开发的。记得使用拷贝出来的gdal.jar包
图片public?static?void?main(String[]?args)?{
????//?write?your?code?here
????//run->edit?configuration->vm?option:?-Djava.library.path="/usr/lib/jni"
????try{
????????System.out.println(System.getProperty("java.library.path"));
????????System.setProperty("java.library.path",?System.getProperty("java.library.path")
????????????????+?":/usr/lib/jni/");
????????System.out.println(System.getProperty("java.library.path"));
????????gdal.AllRegister();
????????Dataset?hDataset?=?gdal.Open("/usr/share/java/JAVAGDAL.tiff")?;
????????int?nband?=?hDataset.getRasterCount()?;
????????int?xsize?=?hDataset.getRasterXSize()?;
????????int?ysize?=?hDataset.getRasterYSize()?;
????????System.out.println(xsize?+?"?"?+?ysize?+?"?"?+?nband?);
????????hDataset.delete();
????}
????catch?(Exception?ex){
????????System.out.println(ex.getMessage());
????}
}
图片图片
2.4 gdal离线镜像
测试通过后,将此容器创建新的镜像,前提容器启动着的
sudo?docker?commit?-a?"xibeijia"?-m?"Ubuntu?20.04.2?LTS,gdal?3.0.4,jdk?1.8"?efdb578d35d9?ubuntugdaljava:v1
docker images就可以看见新创建的镜像
指定镜像保存成 tar 归档文件。然后就可以离线部署进行分发了。使用load状态容器
sudo?docker?save?-o?ubuntugdaljava_v1.tar?ubuntugdalgdal:v1
2.5 第三方包管理
一般企业开发我们会搭建个私服nexus,个人将第三方使用到的jar包放在私服上,也方便其他人下载。
第一步gdal.jar上传到私服上。记得勾选Generate a POM file with
图片第二部pom文件中添加私服地址和第三方jar包的坐标
<repository>
????????<id>nexus</id>
????????<name>Releases</name>
????????<url>http://192.168.6.137:8081/repository/maven-public</url>
</repository>
<dependency>
????????<groupId>org.gdal</groupId>
????????<artifactId>gdal</artifactId>
????????<version>3.0.4</version>
</dependency>
内容总结
以上是互联网集市为您收集整理的Gdal4Java Docker镜像创建全部内容,希望文章能够帮你解决Gdal4Java Docker镜像创建所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。