docker社区的geodata/gdal镜像dockerfile分析

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

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

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

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

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

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

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

dockerfile内容如下:

##
# geodata/gdal
#
# This creates an Ubuntu derived base image that installs the latest GDAL
# subversion checkout compiled with a broad range of drivers.  The build process
# is based on that defined in
# <https://github.com/OSGeo/gdal/blob/trunk/.travis.yml>
#

# Ubuntu 14.04 Trusty Tahyr
FROM ubuntu:trusty

MAINTAINER Homme Zwaagstra <hrz@geodata.soton.ac.uk>

# Install the application.
ADD . /usr/local/src/gdal-docker/
RUN /usr/local/src/gdal-docker/build.sh

# Externally accessible data is by default put in /data
WORKDIR /data
VOLUME ["/data"]

# Output version and capabilities by default.
CMD gdalinfo --version && gdalinfo --formats && ogrinfo --formats

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

build.sh内容如下:

#!/bin/sh

##
# Install GDAL from within a docker container
#
# This script is designed to be run from within a docker container in order to
# install GDAL. It delegates to `before_install.sh` and `install.sh` which are
# patched from the Travis CI configuration in the GDAL repository.
#

set -e

DIR=$(dirname "$(readlink -f "$0")")
GDAL_VERSION=$(cat ${DIR}/gdal-checkout.txt)

export DEBIAN_FRONTEND=noninteractive

# Set the locale. Required for subversion to work on the repository.
update-locale LANG="C.UTF-8"
dpkg-reconfigure locales
. /etc/default/locale
export LANG

# Instell prerequisites.
apt-get update -y
apt-get install -y         software-properties-common         wget         unzip         subversion         ccache         clang-3.5         patch         python-dev         ant

# Everything happens under here.
cd /tmp

# Get GDAL.
svn checkout --quiet "http://svn.osgeo.org/gdal/${GDAL_VERSION}/" /tmp/gdal/

# Install GDAL.
cd /tmp/gdal

# Apply our build patches.
patch ./gdal/ci/travis/trusty_clang/before_install.sh ${DIR}/before_install.sh.patch
patch ./gdal/ci/travis/trusty_clang/install.sh ${DIR}/install.sh.patch

# Do the build.
. ./gdal/ci/travis/trusty_clang/before_install.sh
. ./gdal/ci/travis/trusty_clang/install.sh

# Clean up.
apt-get autoremove -y
apt-get clean
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,清理临时文件。

时间: 2024-10-10 21:43:41

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

docker定义、安装、镜像、容器

Docker是什么 使用最广泛的开源容器引擎 一种操作系统级的虚拟化技术 依赖于Linux内核特性:Namespace(资源隔离)和Cgroups(资源限制) 一个简单的应用程序打包工具 Docker设计目标 提供简单的应用程序打包工具 开发人员和运维人员职责逻辑分离 多环境保持一致性 像一艘货船,通过集装箱把代码打包,分开,然后再传输 Docker基本组成 Docker Client:客户端Ddocker Daemon:守护进程Docker Images:镜像Docker Container:

Docker 社区和企业版出现了

Docker 社区和企业版出现了 今天早上去官网看文档,一进去发现主页变了,映入眼帘的便是:join us at Dockercon, April 17,2017.一脸蒙蔽的我往下翻了翻,发现做了这么久的解决方案,docker企业版都支持,但是收费!!!!而且,Dockercon是什么鬼? 当然,docker也被分为两个版本: community-edition enterprise-edition dockercon社区 docker 官网公布了一个社区,目前还没有开放,其域名是:2017.d

Docker系列(一)---镜像

本系列实验环境均为:CentOS6.6 使用epel库安装docker [[email protected]~]# rpm -ivh http://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm [[email protected]~]# yum install docker-io -y 启动docker并设为开机自启 [[email protected]~]# /etc/init.d/dockerstart [[e

使用docker构建、运行jenkins镜像

目录: 1.基于docker官方的jenkins镜像启动容器 2.使用源码构建jenkins镜像并运行容器 3.使用csphere产品对容器.镜像.主机进行管理 docker近两年很火,最近在听cSphere希云主办的docker培训, 之前也参加过docker相关的技术沙龙(如docker meetup). 同时也使用Jenkins近两年,所以尝试使用docker构建jenkins镜像.运行基于镜像的容器. 因为听希云的docker培训获得了一张200元的腾讯云代金券, 所以用代金券在腾讯云上

docker 实战---安装一个基础镜像 (一)

泡了几天官网,对docker有了一点了解.准备着手搭建一个公司的开发测试环境,包括java.python. 环境介绍 首先说明一下我的环境 2台物理服务器(后面简称主机) 主机A的配置如下: [[email protected] ~]# lsb_release -a LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:p

docker学习系列-jdk基础镜像制作

准备一台安装有docker服务的机器 1.编辑Dockerfile vim Dockerfile FROM centos:latest ADD ./jdk-8u141-linux-x64.tar.gz /usr/local ENV JAVA_HOME /usr/local/jdk1.8.0_141 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV PATH $PATH:$JAVA_HOME/bin 2.docker

Docker容器-构建Tomcat业务镜像

接着上一篇文章来构建Tomcat业务镜像,上篇已经把tomcat基础镜像已经完成了.这次基于tomcat基础镜像构建实际业务镜像. 退到tomcat目录下,新建两个业务用的目录文件 [[email protected] /data/dockerfile/web/tomcat/tomcat-base]#cd .. [[email protected] /data/dockerfile/web/tomcat]#mkdir tomcat-app1 [[email protected] /data/do

Docker构建nginx+uwsgi+flask镜像(二)

Dockerfile搭建环境并打包应用 在上一章Docker构建nginx+uwsgi+flask镜像(一)的学习中,我们学会用命令行一句一句在alpine环境中搭建nginx+uwsgi+flask服务,但这体现不了Docker为我们带来的便利,而本章,我们将通过Dockerfile来制作基础镜像和打包应用,因此会有两个Dockerfile文件. 我们先来写第一个Dockerfile文件,这个文件负责搭建运行环境,运行环境需要包括:nginx.uwsgi.Python3: # 配置基础镜像 F

Docker + SpringBoot2.0快速构建镜像

博文链接 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口.(引用官方概念,本文注重docker+springboot2.0快速构建镜像,对docker更细节的知识不在做赘述) Docker 本文使用的是CentOs7 docker 安装: yum install docker systemctl start docker 开