This Dockerfile creates and image with the following:
- Ubuntu 18.04 (Cosmic Cuttlefish)
- GDAL, compiled with HDF4, HDF5, and JPEG2000 (OpenJPEG) support
- Java JRE 8
- Scala and SBT
- Python 3
- AWS CLI
Images generated from this build are published to [https://hub.docker.com/r/s22s/geo-swak]
- GDAL based mostly on geographica/gdal2, and to a lesser extent geodata/gdal
- Java install based on [https://github.com/anapsix/docker-oracle-java8]
- Scala/SBT install based on hseeberger/scala-sbt
- Python install based on [https://askubuntu.com/questions/865554/how-do-i-install-python-3-6-using-apt-get]
make build
make push
Running the container without any arguments will by default output the GDAL version string as well as the supported raster and vector formats:
docker run s22s/geo-swak
The following command will open a bash shell in an Ubuntu based environment with GDAL available:
docker run -it s22s/geo-swak /bin/bash
You will most likely want to work with data on the host system from within the docker container, in which case run the container with the -v option.
docker run -it -v $(pwd):/data s22s/geo-swak /bin/bash
Assuming
you have a raster called test.tif in your current working directory on your
host system, running the following command should invoke gdalinfo on
test.tif:
docker run -it -v $(pwd):/data s22s/geo-swak gdalinfo test.tif
This works because the current working directory is set to /data in the
container, and you have mapped the current working directory on your host to
/data.
Note that the image tagged latest, GDAL represents the latest code at the
time the image was built. If you want to include the most up-to-date commits
then you need to build the docker image yourself locally along these lines:
docker build -t s22s/geo-swak:local git://github.com/geo-data/gdal-docker/
Bash functions can make the GDAL tools run as if they were installed locally. Add this to your .bashrc (or .bash_profile, if .bash_profile does not source your .bashrc):
############################
# start geo-swak functions #
############################
function g {
docker run -it -v $(pwd):/data s22s/geo-swak "$@"
}
function vcog {
g vcog.py "$@"
}
function gdalinfo {
g gdalinfo "$@"
}
function gdal_translate {
g gdal_translate "$@"
}
function gdalwarp {
g gdalwarp "$@"
}
function ogr2ogr {
g ogr2ogr "$@"
}
function ogrinfo {
g ogrinfo "$@"
}
##########################
# end geo-swak functions #
##########################With this, you can just run commands like gdalinfo band1.tif, and it will run that command inside the docker container.
functions can be added for other commands, or they can be run with a command like g gdalinfo band1.tif.
If the file are in a directory other than one below the pwd, then then volume mount (-v) as part of the command will need
to be modified.