<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Gdal4Java Docker鏡像創(chuàng)建

          共 6173字,需瀏覽 13分鐘

           ·

          2021-04-01 12:17

          本想在alpine極小容器里編譯gdal,打包一個(gè)最小的gdal4java的鏡像,總是有問(wèn)題

          內(nèi)容目錄

          1、失敗方案1.1 alpine1.2 ubuntu2、成功方案2.1 ubuntu jave82.2 安裝gdal4java2.3 java控制臺(tái)程序測(cè)試2.4 gdal離線鏡像2.5 第三方包管理

          1、失敗方案

          1.1 alpine

          參考這個(gè),但我想要gdal4java的環(huán)境,這個(gè)倉(cāng)庫(kù)里沒(méi)找到。
          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"]

          自己編譯源碼就出現(xiàn)下面這個(gè)問(wèn)題繞不過(guò)去,無(wú)奈放棄
          查看容器操作系統(tǒng)

          cat /etc/issue
          圖片
          圖片

          1.2 ubuntu

          網(wǎng)上使用ubuntu挺多,使用ubuntu編譯下試下也是同樣的問(wèn)題。ubuntu鏡像可以從dockerhub拉最新的
          https://blog.csdn.net/wjdhnn/article/details/105974142
          注意proj-6.3.1.zip不存在,改用proj-6.3.1.tar.gz包

          2、成功方案

          安裝python的參考這個(gè)
          https://www.jianshu.com/p/8cfada816e13
          java的我主要參考這個(gè)
          https://zhuanlan.zhihu.com/p/108808327?utm_source=wechat_session
          但也有不少改動(dòng)。

          2.1 ubuntu jave8

          啟動(dòng)ubuntu容器,從oracle官網(wǎng)上下載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環(huán)境變量

          圖片

          將下面放在/etc/profile最后。為了每次進(jìn)入容器都生效,在~/.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就會(huì)出現(xiàn)版本。圖片忘截了,意會(huì)一下。

          2.2 安裝gdal4java

          我只裝了libgdal-jave就行了。文章中說(shuō)的gdal-bin和libgdal-dev沒(méi)裝,最終鏡像會(huì)少個(gè)200M左右

          apt-get update
          apt-get install libgdal-java

          然后gdal Java接口文件路徑就在

          /usr/lib/jni/libgdaljni.so

          相應(yīng)的gdal.jar好像在/usr/share/java下,或者可以搜索一下

          find / -name gdal.jar

          使用docker命令將這個(gè)gdal.jar包拷貝出去,我們開(kāi)發(fā)jave程序需要使用這個(gè)jar包,這里面只有方法的簽名

          docker cp 容器id或名稱:/path/filename /path/filename

          補(bǔ)充一步,將java接口文件libgdaljni.so,拷貝到/urs/lib下,不然運(yùn)行時(shí)候會(huì)報(bào)錯(cuò)找不到libgdaljin

          圖片

          2.3 java控制臺(tái)程序測(cè)試

          寫(xiě)個(gè)簡(jiǎn)單的java控制臺(tái)程序 測(cè)試一下,windows下開(kāi)發(fā)的。記得使用拷貝出來(lái)的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離線鏡像

          測(cè)試通過(guò)后,將此容器創(chuàng)建新的鏡像,前提容器啟動(dòng)著的

          sudo docker commit -a "xibeijia" -m "Ubuntu 20.04.2 LTS,gdal 3.0.4,jdk 1.8" efdb578d35d9 ubuntugdaljava:v1

          docker images就可以看見(jiàn)新創(chuàng)建的鏡像
          指定鏡像保存成 tar 歸檔文件。然后就可以離線部署進(jìn)行分發(fā)了。使用load狀態(tài)容器

          sudo docker save -o ubuntugdaljava_v1.tar ubuntugdalgdal:v1

          2.5 第三方包管理

          一般企業(yè)開(kāi)發(fā)我們會(huì)搭建個(gè)私服nexus,個(gè)人將第三方使用到的jar包放在私服上,也方便其他人下載。
          第一步gdal.jar上傳到私服上。記得勾選Generate a POM file with

          圖片

          第二部pom文件中添加私服地址和第三方j(luò)ar包的坐標(biāo)


          <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>


          瀏覽 75
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩色情电影在线观看 | www青青草 | 日本肉丝袜三级片在线免费看 | 草逼小视频无码 | 欧美黄网站在线观看 |