Linux下安装GDAL(含docker部分)

这篇具有很好参考价值的文章主要介绍了Linux下安装GDAL(含docker部分)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、简介

介绍:GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。【百度百科】

个人理解:这玩意就是一个数据转换工具。会将各种类型的数据文件,通过GDAL提供的命令或工具,给你转成你需要的格式。比如:做地图的时候,DXF文件,转成,GeoJson文件。我们就是这样用的。

二、安装

1、当前系统版本

[root@localhost gdal-3.2.0]# cat /proc/version
# linux centos 内核el7.x86_64  gcc版本4.8.5
Linux version 3.10.0-1160.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Mon Oct 19 16:18:59 UTC 2020

2、安装方法

2.1 、普通安装

2.2.1、下载

1、可以去官网下载(推荐)
2、也还可以Debian下载,后者还提供源码和编译好的文件下载(Debian版本)。
3、另外github上也有docker版本:
Linux下安装GDAL(含docker部分)

2.2.2、尝试安装GDAL,安装gcc以及gcc-c++

参考博客:gdal-3.1.2 linux(Ubuntu) 编译 附SQLite3 PROJ6编译

下载地址:gdal-3.2.0.tar.gz

#上传文件gdal-3.2.0.tar.gz 到 /home/gdal下
[root@localhost]# tar -zxvf gdal-3.2.0.tar.gz
#....省略解压过程
[root@localhost]# mkdir install_file
[root@localhost]# cd gdal-3.2.0
[root@localhost gdal-3.2.0]# pwd
/home/gdal/gdal-3.2.0
[root@localhost gdal-3.2.0]# ./configure --prefix=/home/install_file
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/home/gdal/gdal-3.2.0':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
#解析:缺少依赖 

[root@localhost gdal-3.2.0]# yum install gcc gcc-c++
#省略下载安装过程
#再次执行./configure --prefix=/home/install_file ,就会发现gcc检测安装成功,因内容太多,详见截图
#最后发现没有PROJ 依赖(这个地方不一定是没有依赖,还可能是你没使用--with-proj指定PROJ的安装文件)
#经过查询博客发现 PROJ 这个坐标转换工具,还需要依赖sqlite,遂,先安装sqlite3
[root@localhost gdal-3.2.0]# 

Linux下安装GDAL(含docker部分)
Linux下安装GDAL(含docker部分)

2.2.3、安装依赖SQLITE

参考:博客

#因为之前使用 yum update。就没安装博客上写的安装依赖包
[root@localhost home]# mkdir sqlite;cd sqlite
[root@localhost sqlite]# wget https://sqlite.org/2022/sqlite-autoconf-3400000.tar.gz
# 省略下载过程
[root@localhost sqlite]# tar -zxvf sqlite-autoconf-3400000.tar.gz
# 省略解压过程
[root@localhost sqlite]#mkdir install_file;cd sqlite-autoconf-3400000
#注意执行之前,按照博客,在配置文文件中增加一行(包括#)
#define SQLITE_ENABLE_COLUMN_METADATA 1
#不过我没找到sqlite.c,在sqlite3.c上加的。
#否则,后期在安装GDAL的时候,会报错。详见 [7、安装GDAL中间碰到的坑]
[root@localhost sqlite-autoconf-3400000]# ./configure --prefix=/home/sqlite3/install_file
#执行结果省略,最后结果如下

Linux下安装GDAL(含docker部分)
Linux下安装GDAL(含docker部分)

#有了Makefile就可以执行make命令
[root@localhost sqlite-autoconf-3400000]# make && make install
#执行完毕,回到之前的目录中,即 config命令指定的安装目录
[root@localhost sqlite-autoconf-3400000]# cd ../install_file/
[root@localhost install_file]# ll
total 0
drwxr-xr-x. 2 root root  21 2023-03-29 11:04:13 bin
drwxr-xr-x. 2 root root  43 2023-03-29 11:04:13 include
drwxr-xr-x. 3 root root 135 2023-03-29 11:04:13 lib
drwxr-xr-x. 3 root root  17 2023-03-29 11:04:13 share
#出现了安装文件
#安装博客所说,建立新的连接,使用新版本的sqlite
[root@localhost install_file]# cd /usr/bin
[root@localhost bin]# sqlite3 -version
3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668
[root@localhost bin]# mv sqlite3 sqlite3_old
#建议直接生成的/home/sqlite3/install_file/bin拷贝/usr/bin下
[root@localhost bin]# ln -s /home/sqlite3/install_file/bin/sqlite3 /usr/bin/sqlite3
[root@localhost bin]# sqlite3 -version
3.40.0 2022-11-16 12:10:08 89c459e766ea7e9165d0beeb124708b955a4950d0f4792f457465d71b158d318
#环境变量
[root@localhost bin]# vim ~/.bashrc
[root@localhost bin]# source  ~/.bashrc
[root@localhost bin]# echo $PKG_CONFIG_PATH
/home/sqlite3/install_file/lib/pkgconfig:/usr/local/sqlite/lib/pkgconfig:
[root@localhost bin]# sudo ldconfig

Linux下安装GDAL(含docker部分)

2.2.4、安装PROJ

注意:proj安装需要依赖sqlite3,且sqlite3>= 3.11

proj官网下载地址:下载地址

[root@localhost bin]# cd /home;mkdir proj;cd proj
[root@localhost proj]# wget https://download.osgeo.org/proj/proj-8.2.1.tar.gz
--2023-03-29 13:44:01--  https://download.osgeo.org/proj/proj-8.2.1.tar.gz
Resolving download.osgeo.org (download.osgeo.org)... 140.211.15.30
Connecting to download.osgeo.org (download.osgeo.org)|140.211.15.30|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5882136 (5.6M) [application/octet-stream]
Saving to: ‘proj-8.2.1.tar.gz’

100%[=================================================================================>] 5,882,136   1.76MB/s   in 3.2s

2023-03-29 13:44:11 (1.76 MB/s) - ‘proj-8.2.1.tar.gz’ saved [5882136/5882136]

[root@localhost proj]# mkdir install_file;cd proj-8.2.1
[root@localhost proj-8.2.1]# ./configure --prefix=/home/proj/install_file
#.......省略前面的
#..................................
checking for TIFF... configure: error: Package requirements (libtiff-4) were not met:

No package 'libtiff-4' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables TIFF_CFLAGS
and TIFF_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

#缺少依赖 安装依赖 
[root@localhost proj-8.2.1]# yum install -y libtiff libtiff-devel.x86_64 libcurl-devel.x86_64
#再次执行 编译
[root@localhost proj-8.2.1]# ./configure --prefix=/home/proj/install_file
#截图见截图
[root@localhost proj-8.2.1]# make && make install

只装 yum install -y libtiff libtiff-devel.x86_64 再次使用config进行配置,会报错,需要装:yum install -y libcurl-devel.x86_64

Linux下安装GDAL(含docker部分)
Linux下安装GDAL(含docker部分)

2.2.5、配置环境变量

Linux下安装GDAL(含docker部分)

2.2.6、安装GDAL
[root@localhost home]# cd /home/gdal/gdal-6.3.2
#需要是用参数[--with-proj=$PROJ_INSTALL_PATH]指定proj的安装路径。否则会给你报错,详见[2.2.6章节 4、proj版本问题]
[root@localhost gdal-6.3.2]# ./configure --prefix=/home/gdal/install_file --with-proj=/home/proj/install_file
#报错查看 当前目录下 config.log,进行排错。关于编译的问题不用管。关于check的问题,选择性处理。一般软件支持很多功能,附属功能的插件依赖可以不用管。影响安装的插件依赖必须处理。最后config.log日志最后 exit 0 表示配置成功。可以进行make编译了。中间的错误,查看2.2.6
[root@localhost gdal-6.3.2]#  make & make install

configure成功后的截图
Linux下安装GDAL(含docker部分)

2.2.7、安装中碰到的问题
1 、proj 找不到依赖

iso19111/internal.cpp:48:21: fatal error: sqlite3.h: No such file or directory

#include "sqlite3.h"

找不到头文件的问题。是因为系统没有安装函数

【补充】:

当用交叉编译器编译的时候,也会出现找不到sqlite3.h头文件的情况,解决方法是把sqlite3.h这个头文件放到交叉编译工具目录的 include目录下

执行

#注意 apt,centos里没有这个命令。且yum install libsqlite3-dev 找不到这个依赖
sudo apt-get install libsqlite3-dev 找不到这个依赖
#解决方案:可以将sqlite3.h文件复制到编译工具下
cp /home/sqlite3/install_file/includ/sqlite3.h  /home/proj/proj-8.2.1/include/

Linux下安装GDAL(含docker部分)

2、configure失败

Linux下安装GDAL(含docker部分)

#在当前目录下,查看config.log
ld returned 1 exit status 
#表示编译的语法等出错。且 make[2],意味前面有一个错误make[1]导致了这个错误

Linux下安装GDAL(含docker部分)

还有类似的:cannot stat '.deps/sqlite3-shell.Tpo': No such file or directory等等。关于.deps都是依赖问题。

#依赖错误,因为操作系统依赖,不知道是哪个包的依赖,所以统一的全部都在装一下
yum -y install  bzip2 gcc make subversion gcc-c++ sqlite-devel libxml2 libxml2-devel python-devel numpy expat-devel libcurl-devel postgresql postgresql-devel

#装完之后,make distclean后,重新make,结果还是报这个错误。经过多次翻找排查。
#出现这个问题是,因为 sqlite-devel没有安装成功
#在有网的电脑上,安装上sqlite-devel,将安装文件拷贝到虚拟机即可
3、gcc版本问题

Linux下安装GDAL(含docker部分)
Linux下安装GDAL(含docker部分)

出现 gcc: error: unrecognized command line option '-V'  
这种问题是gcc版本太低了。导致编译出错。根据里面的要求 gcc -qversion >&5
将gcc版本更换为5以上的版本。
更换后还有这两类问题,不用管。一般不会影响安装,进行其他步骤即可。

更换gcc版本方法,不予赘述:CentOS下快速升级gcc版本

4、proj版本问题

Linux下安装GDAL(含docker部分)

中间多次安装不成功,我将proj 8降低到了proj 4版本,重新安装完成后,直接安装GDAL报错。
需要proj >=6的版本。8的版本多次安装不成功,更换6.3.2的版本。
==================
后来才发现。不是版本的问题。而是configure gdal的时候需要使用[--with-proj]属性,
来指定PROJ的安装路径,但是么。。。我没指定,所以,我又双叒叕装了一边PROJ。
5、需要sqlite3>=3.11

Linux下安装GDAL(含docker部分)

#安装PROJ 6 需要sqlite3 >=3.11以上。
#已经安装的,需要配置环境变量
export PKG_CONFIG_PATH=/home/sqlite3/install_file/lib/pkgconfig:$PKG_CONFIG_PATH
#安装完毕后,在/usr/bin下增加proj的命令。(可以不用下面操作,这是configure我未指定PROJ的地址,尝试让脚本识别PROJ的命令,才加的。所以我注释掉了)
#ln -s /home/proj/install_file/bin/proj /usr/bin/proj
#建议直接将 cp -r /home/proj/install_file/bin/* /usr/bin/
6、彻底更换gcc

通过工具切换gcc后,在进行配置GDAL的时候,发现,运行命令是

[root@localhost ~]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/opt/rh/devtoolset-7/root/usr --mandir=/opt/rh/devtoolset-7/root/usr/share/man --infodir=/opt/rh/devtoolset-7/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-plugin --with-linker-hash-style=gnu --enable-initfini-array --with-default-libstdcxx-abi=gcc4-compatible --with-isl=/builddir/build/BUILD/gcc-7.3.1-20180303/obj-x86_64-redhat-linux/isl-install --enable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 7.3.1 20180303 (Red Hat 7.3.1-5) (GCC)

#确实 是 7.3.1版本。COLLECT_LTO_WRAPPER指向gcc7版本的lto-wrapper
#但是在 gdal进行configure的时候,根据日志,COLLECT_LTO_WRAPPER指向的是旧版本的gcc。
#直接替换/usr/bin/下关于gcc的命令,会使编译的COLLECT_LTO_WRAPPER指向正确的gcc。但是C的版本无法保证是正确的。。。导致C的部分无法编译。

参考博客:安装最新版本的GCC编译器(./configure执行编译报错 C++ compiler too old)

更换GCC的时候,源码安装失败,根据提示安装GMP 4.2+,MPFR 2.4.0+ MPC 0.8.0+
Linux下安装GDAL(含docker部分)

到最后。。。。gcc还是没有更换成功。。。。可是我明明这几个我都装了啊!烦死了。。。。。

Linux下安装GDAL(含docker部分)

7、安装GDAL中间碰到的坑

Linux下安装GDAL(含docker部分)

根据提示 sqlite3_column_orgin_name 以及 sqlite3_column_table_name 这俩参数在 libgdal.so里找不到.
根据博客的提示:
博客1是,缺包缺依赖opencv。
博客2是,源码安装sqlite3的时候,没有预初始化。
到最后我按照博客2解决的,在安装sqlite3配置的时候,增加一行配置,初始化一下sqlite3的参数

博客1:编译example出现/usr/lib/libgdal.so.20: undefined reference to `sqlite3_column_orig错误解决

博客2:ImportError: /lib/libgdal.so.26: undefined symbol: sqlite3_column_table_name

2.2、docker容器内安装

参考博客:【Linux】CentOS制作Java+GDAL环境镜像并部署运行SpringBoot项目

如果按照当前这个dockerfile来构建镜像。

需要提前准备:

  • jdk-8u301-linux-x64.tar.gz
  • geos-3.6.2.tar.bz2
  • proj-4.9.3.tar.gz
  • FileGDB_API_1_5_64.tar.gz
  • apache-ant-1.10.7-bin.tar.gz
  • swig-4.0.1.tar.gz
  • gdal-2.4.4.tar.gz

贴了一下人家的dockfile,这个DockerFile文件本质上说,还是按普通安装的步骤来弄的。只不过软件是安装到容器里了。有耐心编写DockerFile,且有信心能安装成功的可以试试。因为我上面本地都没有安装成功,本人没信心使用DockerFile安装成功,就没进行这个操作。

# 以centos7为基础镜像构建本镜像
FROM centos:7
LABEL maintainer="DORIC"


#------------------- 安装JAVA8 -------------------
# 使用ADD命令将与Dockerfile相同目录下的文件拷贝并解压缩至镜像指定目录下
# 非常规格式的文件复制建议使用COPY命令替代
ADD ./jdk-8u301-linux-x64.tar.gz /usr/local
# 设置工作目录为镜像中的指定路径,后续命令均在此目录下执行
WORKDIR /usr/local
# 修改文件名,以/usr/local/java为JAVA_HOME
RUN mv jdk1.8.0_301 /usr/local/java

# Dockerfile使用ENV设置环境变量
# 设置JAVA环境变量
ENV JAVA_HOME /usr/local/java
ENV JAVA_BIN /usr/local/java/bin
ENV JRE_HOME /usr/local/java/jre
# 将java中可执行文件目录添加到PATH
ENV PATH $PATH:/usr/local/java/bin:/usr/local/java/jre/bin
ENV CLASSPATH $CLASSPATH:/usr/local/java/jre/bin:/usr/local/java/lib:/usr/local/java/jre/lib/charsets.jar


#------------------- 安装编译所需要的工具及库 -------------------
RUN yum -y install  \
bzip2 \ 
gcc \
make \
subversion \
gcc-c++ \
sqlite-devel \
libxml2 \ 
libxml2-devel \
python-devel \
numpy \
expat-devel \
libcurl-devel \ 
postgresql \ 
postgresql-devel


#------------------- 安装geos -------------------
# 复制文件到镜像中指定目录
COPY ./geos-3.6.2.tar.bz2 /usr/local/
WORKDIR /usr/local
# 解压缩文件到当前目录下
RUN tar -xvf geos-3.6.2.tar.bz2
WORKDIR /usr/local/geos-3.6.2
RUN ./configure
RUN make && make install
# 删除已经安装完毕的压缩包、安装包
RUN rm -rf /usr/local/geos-3.6.2.tar.bz2
RUN rm -rf /usr/local/geos-3.6.2


#------------------- 安装proj4 -------------------
COPY ./proj-4.9.3.tar.gz /usr/local/
WORKDIR /usr/local
RUN tar -xvf proj-4.9.3.tar.gz
WORKDIR /usr/local/proj-4.9.3
RUN ./configure
RUN make && make install
RUN rm -rf /usr/local/proj-4.9.3.tar.gz
RUN rm -rf /usr/local/proj-4.9.3

# ------------------- 安装filegdb api -------------------
# 用于实现GDAL操作GDB文件
COPY ./FileGDB_API_1_5_64.tar.gz /usr/local/
WORKDIR /usr/local
# 解压缩
RUN gunzip FileGDB_API_1_5_64.tar.gz
RUN tar -xvf FileGDB_API_1_5_64.tar
# 以/usr/local/FileGDB_API为安装目录
RUN mv FileGDB_API-64 /usr/local/FileGDB_API
# 将FileGDB_API的动态链接目录添加到LD_LIBRARY_PATH,否则报未定义参考错误
ENV LD_LIBRARY_PATH $LD_LIBRARY_PATH:/usr/local/FileGDB_API/lib
# 拷贝动态链接文件后需要执行ldconfig命令以刷新
RUN ldconfig

# 继续编译FileGDB_API,将生成的动态连接文件复制到/usr/local/lib/下
WORKDIR /usr/local/FileGDB_API/samples
RUN make
RUN cp ../lib/* /usr/local/lib/
RUN rm -rf /usr/local/FileGDB_API_1_5_64.tar
RUN rm -rf /usr/local/FileGDB_API_1_5_64.tar.gz

# https://gis.stackexchange.com/questions/292506/how-do-i-install-esri-file-gdb-api-in-ubuntu-16-04-so-qgis-2-8-can-see-it
# cd src/FileGDB_API-64gcc51
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`/lib
# cd samples
# make
# cp ../lib/* /usr/local/lib/
# ldconfig


#------------------- 安装ant -------------------
# 用于编译gdal.jar
COPY apache-ant-1.10.7-bin.tar.gz /usr/local
WORKDIR /usr/local
RUN tar -xvf apache-ant-1.10.7-bin.tar.gz
RUN mv apache-ant-1.10.7 ant
RUN rm -rf /usr/local/apache-ant-1.10.7-bin.tar.gz

#-------------------  安装swig ------------------- 
COPY swig-4.0.1.tar.gz /usr/local
WORKDIR /usr/local
RUN tar -xvf swig-4.0.1.tar.gz
WORKDIR /usr/local/swig-4.0.1
RUN ./configure \
--prefix=/usr/local/swig \ 
--without-pcre
RUN make && make install
RUN rm -rf /usr/local/swig-4.0.1
RUN rm -rf /usr/local/swig-4.0.1.tar.gz

# 配置ant/swig环境变量
ENV ANT_HOME /usr/local/ant
ENV SWIG_HOME /usr/local/swig
ENV PATH $PATH:$ANT_HOME/bin:$SWIG_HOME/bin


#------------------- 编译安装GDAL -------------------
COPY gdal-2.4.4.tar.gz /usr/local
WORKDIR /usr/local
RUN tar -xvf gdal-2.4.4.tar.gz
WORKDIR /usr/local/gdal-2.4.4
RUN ./configure \
--prefix=/usr/local/gdal \
--with-pg \ 
--with-java=/usr/local/java \ 
--with-curl=/usr/bin/curl-config \ 
--with-xml2=/usr/bin/xml2-config \ 
--with-fgdb=/usr/local/FileGDB_API
RUN make && make install

# 配置GDAL环境变量,包含了GDAL_HOME和GDAL_DATA
ENV GDAL_HOME /usr/local/gdal
ENV GDAL_DATA $GDAL_HOME/share/gdal

# 将gdal中的可执行文件和动态链接文件分别拷贝到/usr/local/bin/和/usr/local/lib/
WORKDIR /usr/local/gdal
RUN cp -r ./bin/* /usr/local/bin/
RUN cp -r ./lib/* /usr/local/lib/
RUN ldconfig

# 可执行文件和动态链接库添加到环境变量中
ENV PATH $PATH:/usr/local/bin
ENV LD_LIBRARY_PATH $LD_LIBRARY_PATH:/usr/local/lib


#------------------- 编译gdal.jar -------------------
# 在执行完编译安装的解压缩文件gdal-2.4.4目录下
WORKDIR /usr/local/gdal-2.4.4/swig/java
# 修改java.opt的java_home,在第五行插入指定内容
RUN sed -i '5aJAVA_HOME = /usr/local/java' java.opt
RUN make && make install

# 复制生成的gdal.jar和so文件到指定目录,否则报错,java.lang.UnsatisfiedLinkError:org.gdal.gdal.gdalJNI.AllRegister()V
RUN cp gdal.jar /usr/local/java/jre/lib/ext/
RUN cp *.so /usr/local/java/jre/lib/amd64/server/
ENV LD_LIBRARY_PATH $LD_LIBRARY_PATH:/usr/local/java/jre/lib/amd64/server

# RUN rm -rf /usr/local/gdal-2.4.4
RUN rm -rf /usr/local/gdal-2.4.4.tar.gz

WORKDIR /usr/local

2.3、使用官方制作的IMAGES

官方文档:官方文档
GitHub上官方的dockerImages:gdal_docker_image
JAVA使用GDAL:gdal的使用
关于官方镜像使用方法文档:官方镜像使用文档

注意: 下面的脚本只提供参考思路,不要直接使用。因为这是跟我的自己的项目写的DockfFile文章来源地址https://www.toymoban.com/news/detail-442262.html

这个DockerFile是使用官方镜像作为基础镜像,在其基础上将自己的项目构架成新的镜像。
亲测。好用~
另外,第二种方法跟第一种方法差不多。第一种方法,我在自己的虚拟机上安装成功,在公司服务器(无网)上安装失败。
这是我放弃第二种方法的主要原因!其次的原因就是,准备的包比较多,而且我无法确定其依赖版本是否正确。所以最后放弃第二种方法!!!
其次,关于官方docker镜像的运行,在上面的引用文档中有,可能小伙伴没有自己看文档,这里贴一下
注意:tag/版本号
docker run -it \
    -v $(pwd):/gdal:rw \
    ghcr.io/osgeo/gdal-deps:ubuntu_20.04-master
mkdir -p /home/dockerfile/planning;cd /home/dockerfile/planning;
#使用官方镜像制作images
docker pull ghcr.io/osgeo/gdal:ubuntu-full-3.2.0

echo "###########################"
echo "####  开始编写DockerFile ###"
echo "###########################"
#编写DockerFile
echo "开始编写DockerFile........"
touch /home/dockerfile/planning/DockerFile
tee /home/dockerfile/planning/DockerFile <<-'EOF'
#将官方镜像做为基础镜像
FROM ghcr.io/osgeo/gdal:ubuntu-ful1-3.2.0
MAINTÄINER system
LABEL name="planning" version="2.0" auth="mcs"
VOLUME /home/planning/data
RUN mkdir -p /home/planning/data
WORKDIR /home/planning
#注意:执行脚本前。注意DockerFile文件的位置,以及程序包的位置。
COPY planning.jar /home/planning/planning.jar
ENTRYPOINT ["java","-jar","planning.jar"]
'EOF'
echo "编写DockerFile完成........"

echo "###########################"
echo "####   开始编写启动文件    ###"
echo "###########################"
touch /home/dockerfile/planning/start.sh
tee /home/dockerfile/planning/start.sh <<-'EOF'
#!/bib/bash_
export server=planning
export name=planning
export port=9481
export serverPort=9481
export version=$1
if [ ! -n "$version" ]; then
echo "请指定[版本]"
echo "请使用此命令:sh start.sh [版本]"
echo"示例:sh start.sh 20220523"
exit
fi

echo "###########################"
echo "####     开始构建镜像     ###"
echo "###########################"
echo "start building....."
docker build -f DockerFile -t $name:$version .
echo "================================="
echo "building result:"
docker images | grep -w $name
echo "================================="

echo "###########################"
echo "####     开始运行容器     ###"
echo "###########################"
echo "docker start running...."
echo "执行命令[docker run -p $port:$serverPort --name $name.$version -v /home/logs/$name/$vers ion:/home/$name/logs/$server -d  name:$version]"
docker run -p $port:$serverport --name $name.$version \
-v /home/logs/$name/$version:/home/$name/logs/$server \
-v /etc/localtime:/etc/localtime \
--privileged=true \
-d $name:$version

echo "当前版本:$version 日志位置:/home/logs/$name/$version"
echo "启动命令执行完毕!"
echo "================================="
echo "start result:"
docker ps -a| grep -w $name
echo "================================="
'EOF'

#开始运行脚本
sh start.sh

到了这里,关于Linux下安装GDAL(含docker部分)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LXC(Linux Containers)介绍、安装、使用及与Docker的区别与联系

    LXC是Linux容器(Linux Containers)的缩写,是一种轻量级的虚拟化技术,允许在同一主机上运行多个相互隔离的Linux容器,每个容器都有自己的完整的文件系统、网络、进程和资源隔离环境。LXC使用Linux内核提供的cgroups和命名空间(Namespaces)功能来实现容器隔离。 与传统的虚拟机

    2024年02月09日
    浏览(45)
  • Python版GDAL简单介绍

    1、获取栅格数据基本信息 Dataset对象的RasterYSize、RasterXSize和RasterCount属性分别返回栅格数据的行数、列数和波段数。 from osgeo import gdal ds = gdal.Open(“D:/img/GF2.tif”) rows = ds.RasterYSize cols = ds.RasterXSize bands = ds.RasterCount print(\\\"rows \\\",rows ) print(\\\"cols \\\",cols ) print(\\\"bands \\\",\\\"bands \\\") 2、获取栅格

    2024年02月05日
    浏览(31)
  • 【Python&RS】GDAL库Warp函数介绍

            GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。 Python的GDAL库作为栅格数据的处理转换库,其支持几百种栅格数据格式,如

    2024年02月03日
    浏览(42)
  • docker简介和安装

    什么是docker? docker是基于Go语言编写的开源容器引擎,是操作系统级别的轻量级虚拟技术。主要用于应用打包、分发、部署。 打包:软件开发过程中,打包是将程序打包成软件包或者镜像的过程;在容器化程序中,打包是将应用程序依赖项、应用程序打包成镜像的过程。 分

    2024年02月13日
    浏览(25)
  • docker之简介与安装

           没有虚拟机,我们往往是打包代码发给对方,然后让对方安装相应的环境,比如node、数据库,要是配置不同,项目很有可能无法运行,还会报错,如果多个人想要运行这份代码,那还得多次安装配置环境。         有虚拟机之后,我们可以直接发个链接给别人

    2024年02月12日
    浏览(30)
  • Docker 简介和安装

    Docker 是什么 Docker 是一个应用打包、分发、部署的工具 你也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要, 而普通虚拟机则是一个完整而庞大的系统,包含各种不管你要不要的软件。 本文档课件配套 视频教程 跟普通虚拟机的对比

    2024年02月20日
    浏览(30)
  • Docker·1(简介、安装、基本使用)

    虚拟机: 操作系统是一个很笨重的程序,即是啥都不干,虚拟本身都要占用很多内存和磁盘,并且启动很慢(操作系统要从头到尾把该检测的都检测了,该加载的都加载上)。 容器: 类似于码头的集装箱——相互隔离、长期反复使用、快速装载和卸载、规格标准,在港口和

    2024年02月02日
    浏览(30)
  • docker安装es8.x及elasticSearch8部分api使用

    docker中安装es8 1、es8的tar下载地址: tar包下载地址) 2、docker load -i es-name 3、docker run -d --name elasticsearch-8.6.2 -e ES_JAVA_OPTS=“-Xms256m -Xmx256m” -p 9200:9200 -p 9300:9300 -e “discovery.type=single-node” elasticsearch:8.6.2 4、8开始以后不支持直接使用http方式访问es: 4.1、cd /usr/share/elasticsearch/config 4

    2024年02月12日
    浏览(49)
  • 【云原生 | 55】Docker三剑客之Docker Swarm简介和安装

    🍁 博主简介 :         🏅云计算领域优质创作者         🏅2022年CSDN新星计划python赛道第一名         🏅2022年CSDN原力计划优质作者         🏅阿里云ACE认证高级工程师         🏅阿里云开发者社区专家博主 💊 交流社区 :CSDN云计算交流社区欢迎您的

    2024年02月11日
    浏览(37)
  • Docker[1] Docke环境是什么 安装部署 依赖兼容解决 简介 Centos安装Docker 配置镜像加速 启动Docker

    1.1.什么是Docker 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 ● 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。 ● 在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题 1.1.1.应用部署的环境问题

    2024年04月10日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包