对应从事遥感与地理信息的同仁来说,gdal应该是所有工具中使用频度最高的库了,那么在docker中使用gdal时,面临的第一步就是构建gdal基础镜像,社区中引用最多的就是geodata提供的gdal基础镜像包,封装的gdal最新版本是2.3.0dev。

geodata/gdal的docker在github上的地址如下:

  1. https://github.com/geo-data/gdal-docker

根据该库的提交记录,其生成gdal镜像的方法经历了多次更新:

1 最初按照gdal官网步骤自行编译;

2 基于makefile采用make系统编译;

3 基于gdal的travel ci 脚本进行编译。

dockerfile内容如下:

  1. ##
  2. # geodata/gdal
  3. #
  4. # This creates an Ubuntu derived base image that installs the latest GDAL
  5. # subversion checkout compiled with a broad range of drivers. The build process
  6. # is based on that defined in
  7. # <https://github.com/OSGeo/gdal/blob/trunk/.travis.yml>
  8. #
  9.  
  10. # Ubuntu 14.04 Trusty Tahyr
  11. FROM ubuntu:trusty
  12.  
  13. MAINTAINER Homme Zwaagstra <hrz@geodata.soton.ac.uk>
  14.  
  15. # Install the application.
  16. ADD . /usr/local/src/gdal-docker/
  17. RUN /usr/local/src/gdal-docker/build.sh
  18.  
  19. # Externally accessible data is by default put in /data
  20. WORKDIR /data
  21. VOLUME ["/data"]
  22.  
  23. # Output version and capabilities by default.
  24. CMD gdalinfo --version && gdalinfo --formats && ogrinfo --formats

基于ubuntu:trusty基础镜像,复制镜像构建相关内容到镜像的/usr/local/src/gdal-docker目录,利用build.sh脚本执行构建操作。

build.sh内容如下:

  1. #!/bin/sh
  2.  
  3. ##
  4. # Install GDAL from within a docker container
  5. #
  6. # This script is designed to be run from within a docker container in order to
  7. # install GDAL. It delegates to `before_install.sh` and `install.sh` which are
  8. # patched from the Travis CI configuration in the GDAL repository.
  9. #
  10.  
  11. set -e
  12.  
  13. DIR=$(dirname "$(readlink -f "$")")
  14. GDAL_VERSION=$(cat ${DIR}/gdal-checkout.txt)
  15.  
  16. export DEBIAN_FRONTEND=noninteractive
  17.  
  18. # Set the locale. Required for subversion to work on the repository.
  19. update-locale LANG="C.UTF-8"
  20. dpkg-reconfigure locales
  21. . /etc/default/locale
  22. export LANG
  23.  
  24. # Instell prerequisites.
  25. apt-get update -y
  26. apt-get install -y \
  27. software-properties-common \
  28. wget \
  29. unzip \
  30. subversion \
  31. ccache \
  32. clang-3.5 \
  33. patch \
  34. python-dev \
  35. ant
  36.  
  37. # Everything happens under here.
  38. cd /tmp
  39.  
  40. # Get GDAL.
  41. svn checkout --quiet "http://svn.osgeo.org/gdal/${GDAL_VERSION}/" /tmp/gdal/
  42.  
  43. # Install GDAL.
  44. cd /tmp/gdal
  45.  
  46. # Apply our build patches.
  47. patch ./gdal/ci/travis/trusty_clang/before_install.sh ${DIR}/before_install.sh.patch
  48. patch ./gdal/ci/travis/trusty_clang/install.sh ${DIR}/install.sh.patch
  49.  
  50. # Do the build.
  51. . ./gdal/ci/travis/trusty_clang/before_install.sh
  52. . ./gdal/ci/travis/trusty_clang/install.sh
  53.  
  54. # Clean up.
  55. apt-get autoremove -y
  56. apt-get clean
  57. rm -rf /var/lib/apt/lists/partial/* /tmp/* /var/tmp/*

设置GDAL_VERSION(从gdal-checkout.txt读取,为trunk,表示从svn主干分支下载源代码),下载gdal源代码到/tmp/gdal目录,下载编译器clang和python环境,对gdal的trusty_clang的travis安装脚本打补丁(通过修改后调用diff工具生成patch),安装gdal,清理临时文件。

docker社区的geodata/gdal镜像dockerfile分析的更多相关文章

  1. 官方Tomcat镜像Dockerfile分析及镜像使用

    官方Tomcat镜像 地址:https://hub.docker.com/_/tomcat/ 镜像的Full Description中,我们可以得到许多信息,这里简单介绍下: Supported ta ...

  2. Docker探索系列2之镜像打包与DockerFile

    preface docker基本入门以后,可以试试打包docker镜像与dockerfile了 docker镜像 docker hub仓库有2类仓库,用户仓库和顶层仓库,用户仓库由docker用户创建 ...

  3. Docker(2):使用Dockerfile创建支持SSH服务的镜像

    1.创建工作目录 # mkdir sshd_ubuntu # ls 在其中,创建Dockerfile和run.sh文件 # cd sshd_ubuntu/ # touch Dockerfile run ...

  4. centos7下安装docker(3.3创建镜像--修改dockerfile)

    1.我们在制作dockerfile的时候可能有些命令无法执行,导致镜像无法创建成功,这时我们可以修改dockerfile,从而达到我们的目的 查看Dockerfile内容 创建新的镜像,失败 Dock ...

  5. 在docker hub,用github的dockerfile自动生成docker镜像

    简介: 我已经深深的爱上了docker技术. 在日常使用中,经常看到docker hub 中有很多autobuild的镜像.基本使用是在github中上传dockerfile,过一会儿,docker ...

  6. CMD centos7 安装 最新版本的docker -- dockerfire 原语 ENTRYPOINT - 导入镜像 tar mariadb Dockerfile 构建镜像

    yum update # vim /etc/yum.repos.d/docker.repo //添加以下内容 [dockerrepo] name=Docker Repository baseurl=h ...

  7. Docker 学习笔记 (一)Dockerfile 创建本地镜像

    一.测试环境 OS version: CentOS Linux release 7.5.1804 (Core) docker cluster : master 1 + data node 4 dock ...

  8. Docker如何制作镜像-Dockerfile的使用

    1:什么是Dockerfile Dockerfile是一个文本文档,可以通过docker build 命令构建成一个镜像. 我们可以在Dockerfile中定义一系列的命令,构建出我们想要的镜像. 想 ...

  9. Docker详细介绍安装与镜像制作和拉取

    一.Docker是什么? 产生背景: 开发和运维之间因为环境不同和导致的矛盾(不同的操作系统.软件环境.应用配置等)DevOps 代码.系统.环境.配置等封装成镜像Image--->运维: 集群 ...

随机推荐

  1. android开发者您还在为模拟器犯愁吗?神级android模拟器---Genymotion一个更快、接近完美的模拟器……

    摘要:Android系统非常特别,App须要进行模拟化測试.即使这样仍然有解决的办法---虚拟化技术. 之前的模拟器比方eclipse自带的是非常慢的一种,并且模拟器的版本号并非最新的.开机.能够说差 ...

  2. miniui dataGrid drawcell事件

    var grid = mini.get("tpaTotal2_grid");        //grid.load();        //单元格绘制事件        grid. ...

  3. nbu异地备份实施前,数据收集日志

    1.修改bp.conf配置文件显示重删率 BPDBJOBS_COLDEFS = JOBID 5 true BPDBJOBS_COLDEFS = TYPE 7 false BPDBJOBS_COLDEF ...

  4. springmvc(3)注解

    有疑问可以参考博主其他关于spring mvc的博文 此时直接进行代码的实现 一般的步骤: -加入jar包 -配置DispatcherServlet -加入Spring MVC配置文件 -编写请求的处 ...

  5. 二十八、详述 IntelliJ IDEA 远程调试 Tomcat 的方法

    在调试代码的过程中,为了更好的定位及解决问题,有时候需要我们使用远程调试的方法.在本文中,就让我们一起来看看,如何利用 IntelliJ IDEA 进行远程 Tomcat 的调试. 首先,配置remo ...

  6. HDU 1789 Doing Homework again(非常经典的贪心)

    Doing Homework again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  7. AWS backup

    shadowsocks ssserver -c /etc/shadowsocks/config.json start/stop/reset

  8. Kubernetes资料收集

    官方文档 https://kubernetes.io/docs/home/?path=users&persona=app-developer&level=foundational 视频 ...

  9. sql1999语法

    1.交叉连接 cross join 左右两个表进行组合,产生笛卡尔积累. 左边每一行分别于右表每一行数据匹配. 2.using using使用的前提是两个表右关联的字段需要对应,两个表的join查询. ...

  10. 阿里云服务器发送邮件失败,25端口被禁用,采用ssl 方式 465端口发送

    /** * 邮件工具类 * User: NZG * Date: 2019/3/8 * Time: 12:25 **/ @Data @Component @Configuration @Configur ...