1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Gdal4Java Docker鏡像創(chuàng)建

        共 6173字,需瀏覽 13分鐘

         ·

        2021-04-01 12:17

        本想在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的環(huán)境,這個倉庫里沒找到。
        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)下面這個問題繞不過去,無奈放棄
        查看容器操作系統(tǒng)

        cat /etc/issue
        圖片
        圖片

        1.2 ubuntu

        網(wǎng)上使用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官網(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最后。為了每次進入容器都生效,在~/.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就會出現(xiàn)版本。圖片忘截了,意會一下。

        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包拷貝出去,我們開發(fā)jave程序需要使用這個jar包,這里面只有方法的簽名

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

        補充一步,將java接口文件libgdaljni.so,拷貝到/urs/lib下,不然運行時候會報錯找不到libgdaljin

        圖片

        2.3 java控制臺程序測試

        寫個簡單的java控制臺程序 測試一下,windows下開發(fā)的。記得使用拷貝出來的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離線鏡像

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

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

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

        sudo docker save -o ubuntugdaljava_v1.tar ubuntugdalgdal:v1

        2.5 第三方包管理

        一般企業(yè)開發(fā)我們會搭建個私服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>


        瀏覽 76
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            91人妻论坛 | 国产情品国产三级国产AV剧情 | 班长露出强行被男生揉 | 美女成人免费视频 | 久久婷婷秘 精品国产538 | 男女一起免费观看男女做爱视频网站 | 夜夜艹视频| 国产videosse精品 | 日韩无码免费电影 | 开心激情黄色网 |