diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000000000000000000000000000000000000..2ca1beb2a56a4cb45c526deab8306417c095f6fe
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,2 @@
+.git
+python/__pycache__
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..f846f41497510c5d5a5c3e95f187f6d48ac1a6d1
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,167 @@
+##### Configurable Dockerfile with multi-stage build - Author: Vincent Delbar
+## Mandatory
+ARG BASE_IMG
+
+# ----------------------------------------------------------------------------
+# Init base stage - will be cloned as intermediate build env
+FROM $BASE_IMG AS otbtf-base
+WORKDIR /tmp
+
+### System packages
+COPY tools/docker/build-deps-*.txt ./
+ARG DEBIAN_FRONTEND=noninteractive
+# CLI
+RUN apt-get update -y && apt-get upgrade -y \
+ && cat build-deps-cli.txt | xargs apt-get install --no-install-recommends -y \
+ && apt-get clean && rm -rf /var/lib/apt/lists/*
+# Optional GUI
+ARG GUI=false
+RUN if $GUI; then \
+      apt-get update -y \
+      && cat build-deps-gui.txt | xargs apt-get install --no-install-recommends -y \
+      && apt-get clean && rm -rf /var/lib/apt/lists/* ; fi
+
+### Python3 links and pip packages
+RUN ln -s /usr/bin/python3 /usr/local/bin/python && ln -s /usr/bin/pip3 /usr/local/bin/pip
+# NumPy version is conflicting with system's gdal dep and may require venv
+ARG NUMPY_SPEC="~=1.19"
+RUN pip install --no-cache-dir -U pip wheel mock six future "numpy$NUMPY_SPEC" \
+ && pip install --no-cache-dir --no-deps keras_applications keras_preprocessing
+
+# ----------------------------------------------------------------------------
+# Tmp builder stage - dangling cache should persist until "docker builder prune"
+FROM otbtf-base AS builder
+# A smaller value may be required to avoid OOM errors when building OTB GUI
+ARG CPU_RATIO=1
+
+RUN mkdir -p /src/tf /opt/otbtf/bin /opt/otbtf/include /opt/otbtf/lib
+WORKDIR /src/tf
+
+RUN git config --global advice.detachedHead false
+
+### TF
+ARG TF=v2.4.1
+# Install bazelisk (will read .bazelversion and download the right bazel binary - latest by default)
+RUN wget -qO /opt/otbtf/bin/bazelisk https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-amd64 \
+ && chmod +x /opt/otbtf/bin/bazelisk \
+ && ln -s /opt/otbtf/bin/bazelisk /opt/otbtf/bin/bazel
+
+ARG BZL_TARGETS="//tensorflow:libtensorflow_cc.so //tensorflow/tools/pip_package:build_pip_package"
+# "--config=opt" will enable 'march=native' (otherwise edit CC_OPT_FLAGS in build-env-tf.sh)
+ARG BZL_CONFIGS="--config=nogcp --config=noaws --config=nohdfs --config=opt"
+# "--compilation_mode opt" is already enabled by default (see tf repo .bazelrc and configure.py)
+ARG BZL_OPTIONS="--verbose_failures --remote_cache=http://localhost:9090"
+
+# Build
+ARG KEEP_SRC_TF=false
+COPY tools/docker/build-env-tf.sh ./
+RUN git clone --single-branch -b $TF https://github.com/tensorflow/tensorflow.git \
+ && cd tensorflow \
+ && export PATH=$PATH:/opt/otbtf/bin \
+ && export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/otbtf/lib \
+ && bash -c '\
+      source ../build-env-tf.sh \
+      && ./configure \
+      && export TMP=/tmp/bazel \
+      && BZL_CMD="build $BZL_TARGETS $BZL_CONFIGS $BZL_OPTIONS" \
+      && bazel $BZL_CMD --jobs="HOST_CPUS*$CPU_RATIO" ' \
+# Installation - split here if you want to check files  ^
+#RUN cd tensorflow \
+ && ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg \
+ && pip3 install --no-cache-dir --prefix=/opt/otbtf /tmp/tensorflow_pkg/tensorflow*.whl \
+ && ln -s /opt/otbtf/lib/python3.* /opt/otbtf/lib/python3 \
+ && cp -P bazel-bin/tensorflow/libtensorflow_cc.so* /opt/otbtf/lib/ \
+ && ln -s $(find /opt/otbtf -type d -wholename "*/site-packages/tensorflow/include") /opt/otbtf/include/tf \
+ # The only missing header in the wheel
+ && cp tensorflow/cc/saved_model/tag_constants.h /opt/otbtf/include/tf/tensorflow/cc/saved_model/ \
+ # Symlink external libs (required for MKL - libiomp5)
+ && for f in $(find -L /opt/otbtf/include/tf -wholename "*/external/*/*.so"); do ln -s $f /opt/otbtf/lib/; done \
+ # Cleaning
+ && rm -rf bazel-* \
+ && ( $KEEP_SRC_TF || rm -rf /src/tf ) \
+ && rm -rf /root/.cache/ /tmp/*
+
+### OTB
+ARG GUI=false
+ARG OTB=7.2.0
+
+RUN mkdir /src/otb
+WORKDIR /src/otb
+
+# SuperBuild OTB
+COPY tools/docker/build-flags-otb.txt ./
+RUN git clone --single-branch -b $OTB https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb.git \
+ && mkdir -p build \
+ && cd build \
+ # Set GL/Qt build flags
+ && if $GUI; then \
+      sed -i -r "s/-DOTB_USE_(QT|OPENGL|GL[UFE][WT])=OFF/-DOTB_USE_\1=ON/" ../build-flags-otb.txt; fi \
+ # Possible ENH: superbuild-all-dependencies switch, with separated build-deps-minimal.txt and build-deps-otbcli.txt)
+ #&& if $OTB_SUPERBUILD_ALL; then sed -i -r "s/-DOTB_USE_SYSTEM_([A-Z0-9]*)=ON/-DOTB_USE_SYSTEM_\1=OFF/"" ../build-flags-otb.txt; fi \
+ && OTB_FLAGS=$(cat "../build-flags-otb.txt") \
+ && cmake ../otb/SuperBuild -DCMAKE_INSTALL_PREFIX=/opt/otbtf $OTB_FLAGS \
+ && make -j $(python -c "import os; print(round( os.cpu_count() * $CPU_RATIO ))")
+
+### OTBTF - copy (without .git/) or clone repository
+COPY . /src/otbtf
+#RUN git clone https://github.com/remicres/otbtf.git /src/otbtf
+RUN ln -s /src/otbtf /src/otb/otb/Modules/Remote/otbtf
+
+# Rebuild OTB with module
+ARG KEEP_SRC_OTB=false
+RUN cd /src/otb/build/OTB/build \
+ && export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/otbtf/lib \
+ && export PATH=$PATH:/opt/otbtf/bin \
+ && cmake /src/otb/otb \
+      -DCMAKE_INSTALL_PREFIX=/opt/otbtf \
+      -DOTB_WRAP_PYTHON=ON -DPYTHON_EXECUTABLE=/usr/bin/python3 \
+      -DOTB_USE_TENSORFLOW=ON -DModule_OTBTensorflow=ON \
+      -Dtensorflow_include_dir=/opt/otbtf/include/tf \
+      # Forcing TF>=2, this Dockerfile hasn't been tested with v1 + missing link for libtensorflow_framework.so in the wheel
+      -DTENSORFLOW_CC_LIB=/opt/otbtf/lib/libtensorflow_cc.so.2 \
+      -DTENSORFLOW_FRAMEWORK_LIB=/opt/otbtf/lib/python3/site-packages/tensorflow/libtensorflow_framework.so.2 \
+ && make install -j $(python -c "import os; print(round( os.cpu_count() * $CPU_RATIO ))") \
+ # Cleaning
+ && ( $GUI || rm -rf /opt/otbtf/bin/otbgui* ) \
+ && ( $KEEP_SRC_OTB || rm -rf /src/otb ) \
+ && rm -rf /root/.cache /tmp/*
+
+# Symlink executable python files in PATH
+RUN for f in /src/otbtf/python/*.py; do if [ -x $f ]; then ln -s $f /opt/otbtf/bin/; fi; done
+
+# ----------------------------------------------------------------------------
+# Final stage
+FROM otbtf-base
+MAINTAINER Remi Cresson <remi.cresson[at]inrae[dot]fr>
+
+# Copy files from intermediate stage
+COPY --from=builder /opt/otbtf /opt/otbtf
+COPY --from=builder /src /src
+
+# System-wide ENV
+ENV PATH="/opt/otbtf/bin:$PATH"
+ENV LD_LIBRARY_PATH="/opt/otbtf/lib:$LD_LIBRARY_PATH"
+ENV PYTHONPATH="/opt/otbtf/lib/python3/site-packages:/opt/otbtf/lib/otb/python:/src/otbtf/python"
+ENV OTB_APPLICATION_PATH="/opt/otbtf/lib/otb/applications"
+
+# Default user, directory and command (bash is the entrypoint when using 'docker create')
+RUN useradd -s /bin/bash -m otbuser
+WORKDIR /home/otbuser
+
+# Admin rights without password
+ARG SUDO=true
+RUN if $SUDO; then \
+      usermod -a -G sudo otbuser \
+      && echo "otbuser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers; fi
+
+# Set /src/otbtf ownership to otbuser (but you still need 'sudo -i' in order to rebuild TF or OTB)
+RUN chown -R otbuser:otbuser /src/otbtf
+
+# This won't prevent ownership problems with volumes if you're not UID 1000
+USER otbuser
+# User-only ENV
+
+# Test python imports
+RUN python -c "import tensorflow"
+RUN python -c "import otbtf, tricks"
+RUN python -c "import otbApplication as otb; otb.Registry.CreateApplication('ImageClassifierFromDeepFeatures')"
diff --git a/include/otbTensorflowGraphOperations.cxx b/include/otbTensorflowGraphOperations.cxx
index 794a302bf0f8e2e456da82fd95c061b1a843e0bb..8b06bfd8b6614c034efcf12a410565ce8e79cf47 100644
--- a/include/otbTensorflowGraphOperations.cxx
+++ b/include/otbTensorflowGraphOperations.cxx
@@ -16,10 +16,10 @@ namespace tf {
 //
 // Restore a model from a path
 //
-void RestoreModel(const std::string path, tensorflow::SavedModelBundle & bundle)
+void RestoreModel(const tensorflow::tstring path, tensorflow::SavedModelBundle & bundle)
 {
   tensorflow::Tensor checkpointPathTensor(tensorflow::DT_STRING, tensorflow::TensorShape());
-  checkpointPathTensor.scalar<std::string>()() = path;
+  checkpointPathTensor.scalar<tensorflow::tstring>()() = path;
   std::vector<std::pair<std::string, tensorflow::Tensor>> feed_dict =
   {{bundle.meta_graph_def.saver_def().filename_tensor_name(), checkpointPathTensor}};
   auto status = bundle.session->Run(feed_dict, {}, {bundle.meta_graph_def.saver_def().restore_op_name()}, nullptr);
@@ -32,10 +32,10 @@ void RestoreModel(const std::string path, tensorflow::SavedModelBundle & bundle)
 //
 // Restore a model from a path
 //
-void SaveModel(const std::string path, tensorflow::SavedModelBundle & bundle)
+void SaveModel(const tensorflow::tstring path, tensorflow::SavedModelBundle & bundle)
 {
   tensorflow::Tensor checkpointPathTensor(tensorflow::DT_STRING, tensorflow::TensorShape());
-  checkpointPathTensor.scalar<std::string>()() = path;
+  checkpointPathTensor.scalar<tensorflow::tstring>()() = path;
   std::vector<std::pair<std::string, tensorflow::Tensor>> feed_dict =
   {{bundle.meta_graph_def.saver_def().filename_tensor_name(), checkpointPathTensor}};
   auto status = bundle.session->Run(feed_dict, {}, {bundle.meta_graph_def.saver_def().save_tensor_name()}, nullptr);
@@ -48,7 +48,7 @@ void SaveModel(const std::string path, tensorflow::SavedModelBundle & bundle)
 //
 // Load a session and a graph from a folder
 //
-void LoadModel(const std::string path, tensorflow::SavedModelBundle & bundle)
+void LoadModel(const tensorflow::tstring path, tensorflow::SavedModelBundle & bundle)
 {
 
   tensorflow::RunOptions runoptions;
diff --git a/include/otbTensorflowGraphOperations.h b/include/otbTensorflowGraphOperations.h
index 4e30ae46ec68d7049d3a1d81649586e7322d0ed3..e7636539527173c7c68ec6028915ff174309965d 100644
--- a/include/otbTensorflowGraphOperations.h
+++ b/include/otbTensorflowGraphOperations.h
@@ -27,13 +27,13 @@ namespace otb {
 namespace tf {
 
 // Restore a model from a path
-void RestoreModel(const std::string path, tensorflow::SavedModelBundle & bundle);
+void RestoreModel(const tensorflow::tstring path, tensorflow::SavedModelBundle & bundle);
 
 // Restore a model from a path
-void SaveModel(const std::string path, tensorflow::SavedModelBundle & bundle);
+void SaveModel(const tensorflow::tstring path, tensorflow::SavedModelBundle & bundle);
 
 // Load a session and a graph from a folder
-void LoadModel(const std::string path, tensorflow::SavedModelBundle & bundle);
+void LoadModel(const tensorflow::tstring path, tensorflow::SavedModelBundle & bundle);
 
 // Load a graph from a .meta file
 tensorflow::GraphDef LoadGraph(std::string filename);
diff --git a/python/ckpt2savedmodel.py b/python/ckpt2savedmodel.py
old mode 100644
new mode 100755
index b7ae2bcde0d4b7b6dfbb30266b08a95e618f5760..cbb72bb941f4fbe4c06af9e3baa5883ca3646887
--- a/python/ckpt2savedmodel.py
+++ b/python/ckpt2savedmodel.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 # ==========================================================================
 #
diff --git a/python/create_savedmodel_ienco-m3_patchbased.py b/python/create_savedmodel_ienco-m3_patchbased.py
old mode 100644
new mode 100755
index e5ef21031e75cac82e3031b8fa2bdd6441979af4..62c3e7a4922dd045bca47ba226afeff7d69fc0a2
--- a/python/create_savedmodel_ienco-m3_patchbased.py
+++ b/python/create_savedmodel_ienco-m3_patchbased.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 # ==========================================================================
 #
diff --git a/python/create_savedmodel_maggiori17_fullyconv.py b/python/create_savedmodel_maggiori17_fullyconv.py
old mode 100644
new mode 100755
index a88ab1cdca0ba972c88ed7d85edaf83797d4cedb..fa62bd466a8dd1467a0712346427ddc03e986cfb
--- a/python/create_savedmodel_maggiori17_fullyconv.py
+++ b/python/create_savedmodel_maggiori17_fullyconv.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 #==========================================================================
 #
diff --git a/python/create_savedmodel_pxs_fcn.py b/python/create_savedmodel_pxs_fcn.py
index f1ddac404c33ad0de91b65493d506001cf87b231..76beac95e2c1a5dde252ed236eb68bb6974bd76f 100755
--- a/python/create_savedmodel_pxs_fcn.py
+++ b/python/create_savedmodel_pxs_fcn.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 # ==========================================================================
 #
diff --git a/python/create_savedmodel_simple_cnn.py b/python/create_savedmodel_simple_cnn.py
index 1bccd92867fce0bc9a223eb198edc15496d9fdf0..ef64791ab6211b79932e6a54e2de9b35855b722c 100755
--- a/python/create_savedmodel_simple_cnn.py
+++ b/python/create_savedmodel_simple_cnn.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 # ==========================================================================
 #
diff --git a/python/create_savedmodel_simple_fcn.py b/python/create_savedmodel_simple_fcn.py
index 94bd1d47b2e2a2e9b0975271dccdb2588fd8c57a..b3363685fabb6c5ff8534377331572a321824214 100755
--- a/python/create_savedmodel_simple_fcn.py
+++ b/python/create_savedmodel_simple_fcn.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 # ==========================================================================
 #
diff --git a/tools/docker/README.md b/tools/docker/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..b3437878ba6d32ac33e8a4a0cee78f18b187b86b
--- /dev/null
+++ b/tools/docker/README.md
@@ -0,0 +1,124 @@
+# Build with Docker
+Docker build has to be called from the root of the repository (i.e. `docker build .` or `bash tools/docker/multibuild.sh`).  
+You can build a custom image using `--build-arg` and several config files :
+- Ubuntu : `BASE_IMG` should accept any version, for additional packages see [build-deps-cli.txt](build-deps-cli.txt) and [build-deps-gui.txt](build-deps-gui.txt)
+- TensorFlow : `TF` arg for the git branch or tag + [build-env-tf.sh](build-env-tf.sh) and BZL_* arguments for the build configuration
+- OrfeoToolBox : `OTB` arg for the git branch or tag + [build-flags-otb.txt](build-flags-otb.txt) to edit cmake flags
+
+### Base images
+```bash
+UBUNTU=20.04            # or 16.04, 18.04
+CUDA=11.0.3             # or 10.1, 10.2
+CUDNN=8                 # or 7
+IMG=ubuntu:$UBUNTU
+GPU_IMG=nvidia/cuda:$CUDA-cudnn$CUDNN-devel-ubuntu$UBUNTU
+```
+
+### Default arguments
+```bash
+BASE_IMG                # mandatory
+CPU_RATIO=0.95
+GUI=false
+NUMPY_SPEC="~=1.19"
+TF=r2.4.1
+OTB=7.2.0
+BZL_TARGETS="//tensorflow:libtensorflow_cc.so //tensorflow/tools/pip_package:build_pip_package"
+BZL_CONFIGS="--config=nogcp --config=noaws --config=nohdfs --config=opt"
+BZL_OPTIONS="--verbose_failures --remote_cache=http://localhost:9090"
+KEEP_SRC_TF=false
+KEEP_SRC_OTB=false
+SUDO=true
+
+# NumPy version requirement :
+# TF <  2.4 : "numpy<1.19.0,>=1.16.0"
+# TF >= 2.4 : "numpy~=1.19"
+```
+
+### Bazel remote cache daemon
+If you just need to rebuild with different GUI or KEEP_SRC arguments, or may be a different branch of OTB, bazel cache will help you to rebuild everything except TF, even if the docker cache was purged (after `docker [system|builder] prune`).  
+In order to recycle the cache, bazel config and TF git tag should be exactly the same, any change in [build-env-tf.sh](build-env-tf.sh) and `--build-arg` (if related to bazel env, cuda, mkl, xla...) may result in a fresh new build.  
+
+Start a cache daemon - here with max 20GB but 12GB should be enough to save 2 TF builds (GPU and CPU):  
+```bash
+mkdir -p $HOME/.cache/bazel-remote
+docker run --detach -u 1000:1000 -v $HOME/.cache/bazel-remote:/data -p 9090:8080 buchgr/bazel-remote-cache --max_size=20
+```
+Then just add ` --network='host'` to the docker build command, or connect bazel to a remote server - see 'BZL_OPTIONS'.  
+The other way of docker is a virtual bridge, but you'll need to edit the IP address.  
+
+## Build examples
+```bash
+# Build for CPU using default Dockerfiles args (without AWS, HDFS or GCP support)
+docker build --network='host' -t otbtf:cpu --build-arg BASE_IMG=ubuntu:20.04 .
+
+# Clear bazel config var (deactivate default optimizations and unset noaws/nogcp/nohdfs)
+docker build --network='host' -t otbtf:cpu --build-arg BASE_IMG=ubuntu:20.04 --build-arg BZL_CONFIGS= .
+
+# Enable MKL
+MKL_CONFIG="--config=nogcp --config=noaws --config=nohdfs --config=opt --config=mkl"
+docker build --network='host' -t otbtf:cpu-mkl --build-arg BZL_CONFIGS="$MKL_CONFIG" --build-arg BASE_IMG=ubuntu:20.04 .
+
+# Build for GPU (if you're building for your system only you should edit CUDA_COMPUTE_CAPABILITIES in build-env-tf.sh)
+docker build --network='host' -t otbtf:gpu --build-arg BASE_IMG=nvidia/cuda:11.0.3-cudnn8-devel-ubuntu20.04 .
+
+# Build dev with TF and OTB sources (huge image) + set git branches/tags to clone
+docker build --network='host' -t otbtf:gpu-dev-full --build-arg BASE_IMG=nvidia/cuda:11.0.3-cudnn8-devel-ubuntu20.04 \
+    --build-arg KEEP_SRC_OTB=true --buid-arg KEEP_SRC_TF=true --build-arg TF=nightly --build-arg OTB=develop .
+
+# Build old release
+docker build --network='host' -t otbtf:oldstable-gpu --build-arg BASE_IMG=nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04 \
+    --build-arg TF=r2.1 --build-arg NUMPY_SPEC="<1.19" \
+    --build-arg BAZEL_OPTIONS="--noincompatible_do_not_split_linking_cmdline --verbose_failures --remote_cache=http://localhost:9090" .
+# You could edit the Dockerfile in order to clone an old branch of the repo instead of copying files from the build context
+```
+
+### Debug build
+If you fail to build, you can log into the last layer and check CMake logs. Run `docker images`, find the latest layer ID and run a tmp container (`docker run -it d60496d9612e bash`).  
+You may also need to split some multi-command layers in the Dockerfile.  
+If you see OOM errors during SuperBuild you should decrease CPU_RATIO (e.g. 0.75).  
+
+## Container examples
+```bash
+# Pull GPU image and create a new container with your home directory as volume (requires apt package nvidia-docker2 and CUDA>=11.0)
+docker create --gpus=all --volume $HOME:/home/otbuser/volume -it --name otbtf-gpu mdl4eo/otbtf2.1:gpu
+
+# Run interactive
+docker start -i otbtf-gpu
+
+# Run in background
+docker start otbtf-gpu
+docker exec otbtf-gpu python -c 'import tensorflow as tf; print(tf.test.is_gpu_available())'
+```
+
+### Rebuild OTB with more modules
+```bash
+docker create --gpus=all -it --name otbtf-gpu-dev mdl4eo/otbtf2.1:gpu-dev
+docker start -i otbtf-gpu-dev
+```
+```bash
+# From the container shell:
+sudo -i
+cd /src/otb/otb/Modules/Remote
+git clone https://gitlab.irstea.fr/raffaele.gaetano/otbSelectiveHaralickTextures.git
+cd /src/otb/build/OTB/build
+cmake -DModule_OTBAppSelectiveHaralickTextures=ON /src/otb/otb && make install -j
+```
+
+### Container with GUI
+```bash
+# GUI is disabled by default in order to save space, and because docker xvfb isn't working properly with OpenGL.
+# => otbgui seems OK but monteverdi isn't working
+docker build --network='host' -t otbtf:cpu-gui --build-arg BASE_IMG=ubuntu:20.04 --build-arg GUI=true .
+docker create -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -it --name otbtf-gui otbtf:cpu-gui
+docker start -i otbtf-gui
+$ mapla
+```
+
+### Common errors
+Buid :  
+`Error response from daemon: manifest for nvidia/cuda:11.0-cudnn8-devel-ubuntu20.04 not found: manifest unknown: manifest unknown`  
+=> Image is missing from dockerhub
+
+Run :  
+`failed call to cuInit: UNKNOWN ERROR (303) / no NVIDIA GPU device is present: /dev/nvidia0 does not exist`  
+=> Nvidia driver is missing or disabled, make sure to add ` --gpus=all` to your docker run or create command
diff --git a/tools/docker/build-deps-cli.txt b/tools/docker/build-deps-cli.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5d699cb19db6cd4845acaa909f50e148a172e318
--- /dev/null
+++ b/tools/docker/build-deps-cli.txt
@@ -0,0 +1,53 @@
+apt-transport-https
+ca-certificates
+curl
+cmake
+file
+g++
+gcc
+git
+libc6-dev
+libtool
+lsb-release
+make
+nano
+patch
+pkg-config
+python3-dev
+python3-pip
+python3-setuptools
+python3-venv
+sudo
+swig
+unzip
+vim
+wget
+zip
+
+bison
+gdal-bin
+python3-gdal
+libboost-date-time-dev
+libboost-filesystem-dev
+libboost-graph-dev
+libboost-program-options-dev
+libboost-system-dev
+libboost-thread-dev
+libcurl4-gnutls-dev
+libexpat1-dev
+libfftw3-dev
+libgdal-dev
+libgeotiff-dev
+libgsl-dev
+libinsighttoolkit4-dev
+libkml-dev
+libmuparser-dev
+libmuparserx-dev
+libopencv-core-dev
+libopencv-ml-dev
+libopenthreads-dev
+libossim-dev
+libpng-dev
+libsvm-dev
+libtinyxml-dev
+zlib1g-dev
diff --git a/tools/docker/build-deps-gui.txt b/tools/docker/build-deps-gui.txt
new file mode 100644
index 0000000000000000000000000000000000000000..af6f6b8f2403660fc2207ad7b6f43f523600658f
--- /dev/null
+++ b/tools/docker/build-deps-gui.txt
@@ -0,0 +1,13 @@
+freeglut3-dev
+libglew-dev
+libglfw3-dev
+libqt5opengl5-dev
+libqwt-qt5-dev
+libx11-dev
+libgl-dev
+libxmu-dev
+libxi-dev
+qtbase5-dev
+qttools5-dev
+qttools5-dev-tools
+xvfb
\ No newline at end of file
diff --git a/tools/docker/build-env-tf.sh b/tools/docker/build-env-tf.sh
new file mode 100644
index 0000000000000000000000000000000000000000..406b5dd6478cb25588ef3f05b253c0b16e5a558b
--- /dev/null
+++ b/tools/docker/build-env-tf.sh
@@ -0,0 +1,42 @@
+### TF - bazel build env variables
+
+# As in official TF wheels, you'll need to remove "-march=native" for old CPUs compatibity (no AVX2)
+export CC_OPT_FLAGS="-march=native -Wno-sign-compare"
+export GCC_HOST_COMPILER_PATH=$(which gcc)
+export PYTHON_BIN_PATH=$(which python)
+export PYTHON_LIB_PATH="$($PYTHON_BIN_PATH -c 'import site; print(site.getsitepackages()[0])')"
+export TF_DOWNLOAD_CLANG=0
+export TF_ENABLE_XLA=1
+export TF_NEED_COMPUTECPP=0
+export TF_NEED_GDR=0
+export TF_NEED_JEMALLOC=1
+export TF_NEED_KAFKA=0
+export TF_NEED_MPI=0
+export TF_NEED_OPENCL=0
+export TF_NEED_OPENCL_SYCL=0
+export TF_NEED_VERBS=0
+export TF_SET_ANDROID_WORKSPACE=0
+# For MKL support BZL_CONFIGS+=" --config=mkl"
+#export TF_DOWNLOAD_MKL=1
+#export TF_NEED_MKL=0
+# Needed BZL_CONFIGS=" --config=nogcp --config=noaws --config=nohdfs"
+#export TF_NEED_S3=0
+#export TF_NEED_AWS=0
+#export TF_NEED_GCP=0
+#export TF_NEED_HDFS=0
+
+## GPU
+export TF_NEED_ROCM=0
+export TF_NEED_CUDA=0
+export CUDA_TOOLKIT_PATH=$(find /usr/local -maxdepth 1 -type d -name 'cuda-*')
+if  [ ! -z $CUDA_TOOLKIT_PATH ] ; then
+    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$CUDA_TOOLKIT_PATH/lib64:$CUDA_TOOLKIT_PATH/lib64/stubs"
+    export TF_CUDA_VERSION=$(echo $CUDA_TOOLKIT_PATH | sed -r 's/.*\/cuda-(.*)/\1/')
+    export TF_CUDA_COMPUTE_CAPABILITIES="5.2,6.1,7.0,7.5"
+    export TF_NEED_CUDA=1
+    export TF_CUDA_CLANG=0
+    export TF_NEED_TENSORRT=0
+    export CUDNN_INSTALL_PATH="/usr/"
+    export TF_CUDNN_VERSION=$(sed -n 's/^#define CUDNN_MAJOR\s*\(.*\).*/\1/p' $CUDNN_INSTALL_PATH/include/cudnn.h)
+    export TF_NCCL_VERSION=2
+fi
diff --git a/tools/docker/build-flags-otb.txt b/tools/docker/build-flags-otb.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2c3e0feac4e480cd9f8a0c9969b70c301761e8da
--- /dev/null
+++ b/tools/docker/build-flags-otb.txt
@@ -0,0 +1,32 @@
+-DUSE_SYSTEM_BOOST=ON
+-DUSE_SYSTEM_CURL=ON
+-DUSE_SYSTEM_EXPAT=ON
+-DUSE_SYSTEM_FFTW=ON
+-DUSE_SYSTEM_FREETYPE=ON
+-DUSE_SYSTEM_GDAL=ON
+-DUSE_SYSTEM_GEOS=ON
+-DUSE_SYSTEM_GEOTIFF=ON
+-DUSE_SYSTEM_GLEW=ON
+-DUSE_SYSTEM_GLFW=ON
+-DUSE_SYSTEM_GLUT=ON
+-DUSE_SYSTEM_GSL=ON
+-DUSE_SYSTEM_ITK=ON
+-DUSE_SYSTEM_LIBKML=ON
+-DUSE_SYSTEM_LIBSVM=ON
+-DUSE_SYSTEM_MUPARSER=ON
+-DUSE_SYSTEM_MUPARSERX=ON
+-DUSE_SYSTEM_OPENCV=ON
+-DUSE_SYSTEM_OPENTHREADS=ON
+-DUSE_SYSTEM_OSSIM=ON
+-DUSE_SYSTEM_PNG=ON
+-DUSE_SYSTEM_QT5=ON
+-DUSE_SYSTEM_QWT=ON
+-DUSE_SYSTEM_TINYXML=ON
+-DUSE_SYSTEM_ZLIB=ON
+-DUSE_SYSTEM_SWIG=ON
+
+-DOTB_USE_QT=OFF
+-DOTB_USE_OPENGL=OFF
+-DOTB_USE_GLUT=OFF
+-DOTB_USE_GLEW=OFF
+-DOTB_USE_GLFW=OFF
diff --git a/tools/docker/multibuild.sh b/tools/docker/multibuild.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ad96461ad5905d16caec661adb3479dc4f23dfd2
--- /dev/null
+++ b/tools/docker/multibuild.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+### Docker multibuild and push, see default args and more examples in tools/docker/README.md
+RELEASE=2.1
+UBUNTU=20.04
+CUDA=11.0.3
+CUDNN=8
+IMG=ubuntu:$UBUNTU
+GPU_IMG=nvidia/cuda:$CUDA-cudnn$CUDNN-devel-ubuntu$UBUNTU
+
+## Bazel remote cache daemon
+mkdir -p $HOME/.cache/bazel-remote
+docker run -d -u 1000:1000 -v $HOME/.cache/bazel-remote:/data -p 9090:8080  buchgr/bazel-remote-cache --max_size=20
+
+### CPU (no MKL)
+#docker build --network='host' -t mdl4eo/otbtf$RELEASE:-cpu-dev-all --build-arg BASE_IMG=$IMG --build-arg KEEP_SRC_OTB=true  --build-arg KEEP_SRC_TF=true .
+docker build --network='host' -t mdl4eo/otbtf$RELEASE:cpu-dev --build-arg BASE_IMG=$IMG --build-arg KEEP_SRC_OTB=true .
+docker build --network='host' -t mdl4eo/otbtf$RELEASE:cpu --build-arg BASE_IMG=$IMG .
+#docker build --network='host' -t mdl4eo/otbtf$RELEASE:-cpu-gui --build-arg BASE_IMG=$IMG --build-arg GUI=true .
+
+### MKL is enabled with bazel config flag
+#MKL_CONF="--config=nogcp --config=noaws --config=nohdfs --config=mkl --config=opt"
+#docker build --network='host' -t mdl4eo/otbtf$RELEASE:-cpu-mkl --build-arg BASE_IMG=$IMG --build-arg BZL_CONFIGS="$MKL_CONF" .
+#docker build --network='host' -t mdl4eo/otbtf$RELEASE:-cpu-mkl-dev --build-arg BASE_IMG=$IMG --build-arg BZL_CONFIGS="$MKL_CONF" --build-arg KEEP_SRC_OTB=true .
+
+### GPU support is enabled if CUDA is found in /usr/local
+#docker build --network='host' -t mdl4eo/otbtf$RELEASE:-gpu-dev-all --build-arg BASE_IMG=$GPU_IMG --build-arg KEEP_SRC_OTB=true --build-arg KEEP_SRC_TF=true .
+docker build --network='host' -t mdl4eo/otbtf$RELEASE:gpu-dev --build-arg BASE_IMG=$GPU_IMG --build-arg KEEP_SRC_OTB=true .
+docker build --network='host' -t mdl4eo/otbtf$RELEASE:gpu --build-arg BASE_IMG=$GPU_IMG .
+#docker build --network='host' -t mdl4eo/otbtf$RELEASE:-gpu-gui --build-arg BASE_IMG=$GPU_IMG --build-arg GUI=true .
+
+#docker login
+#docker push mdl4eo/otbtf$RELEASE:-cpu-dev-all
+docker push mdl4eo/otbtf$RELEASE:-cpu-dev
+docker push mdl4eo/otbtf$RELEASE:-cpu
+#docker push mdl4eo/otbtf$RELEASE:-cpu-gui
+#docker push mdl4eo/otbtf$RELEASE:-cpu-mkl
+
+#docker push mdl4eo/otbtf$RELEASE:-gpu-dev-all
+docker push mdl4eo/otbtf$RELEASE:-gpu-dev
+docker push mdl4eo/otbtf$RELEASE:-gpu
+#docker push mdl4eo/otbtf$RELEASE:-gpu-gui
diff --git a/tools/dockerfiles/r1.6/bionic.tf-r1.14.otb-develop/Dockerfile b/tools/dockerfiles/r1.6/bionic.tf-r1.14.otb-develop/Dockerfile
deleted file mode 100644
index dac7c853af399afa487871b7e2436f6def3243d2..0000000000000000000000000000000000000000
--- a/tools/dockerfiles/r1.6/bionic.tf-r1.14.otb-develop/Dockerfile
+++ /dev/null
@@ -1,218 +0,0 @@
-FROM ubuntu:18.04
-
-MAINTAINER Remi Cresson <remi.cresson[at]irstea[dot]fr>
-
-RUN apt-get update -y \
- && apt-get upgrade -y \
- && apt-get install -y --no-install-recommends \
-        sudo \
-        ca-certificates \
-        curl \
-        make \
-        cmake \
-        g++ \
-        gcc \
-        git \
-        libtool \
-        swig \
-        xvfb \
-        wget \
-        autoconf \
-        automake \
-        pkg-config \
-        zip \
-        zlib1g-dev \
-        unzip \
- && rm -rf /var/lib/apt/lists/*
-
-# ----------------------------------------------------------------------------
-# OTB and TensorFlow dependencies
-# ----------------------------------------------------------------------------
-RUN apt-get update -y \
- && apt-get upgrade -y \
- && apt-get install -y --no-install-recommends \
-        freeglut3-dev \
-        libboost-date-time-dev \
-        libboost-filesystem-dev \
-        libboost-graph-dev \
-        libboost-program-options-dev \
-        libboost-system-dev \
-        libboost-thread-dev \
-        libcurl4-gnutls-dev \
-        libexpat1-dev \
-        libfftw3-dev \
-        libgdal-dev \
-        libgeotiff-dev \
-        libglew-dev \
-        libglfw3-dev \
-        libgsl-dev \
-        libinsighttoolkit4-dev \
-        libkml-dev \
-        libmuparser-dev \
-        libmuparserx-dev \
-        libopencv-core-dev \
-        libopencv-ml-dev \
-        libopenthreads-dev \
-        libossim-dev \
-        libpng-dev \
-        libqt5opengl5-dev \
-        libqwt-qt5-dev \
-        libsvm-dev \
-        libtinyxml-dev \
-        qtbase5-dev \
-        qttools5-dev \
-        default-jdk \
-        python3-pip \
-        python3.6-dev \
-        python3.6-gdal \
-        python3-setuptools \
-        libxmu-dev \
-        libxi-dev \
-        qttools5-dev-tools \
-        bison \
- && rm -rf /var/lib/apt/lists/*
-
-# ----------------------------------------------------------------------------
-# Python packages
-# ----------------------------------------------------------------------------
-RUN ln -s /usr/bin/python3 /usr/bin/python \
- && python3 -m pip install --upgrade pip \
- && python3 -m pip install pip six numpy wheel mock keras future
-
-# ----------------------------------------------------------------------------
-# Build TensorFlow
-# ----------------------------------------------------------------------------
-RUN export TF_ROOT=/work/tf \
- && mkdir -p ${TF_ROOT}/bazel \
- && cd ${TF_ROOT}/bazel \
- && wget https://github.com/bazelbuild/bazel/releases/download/0.24.1/bazel-0.24.1-installer-linux-x86_64.sh \
- && chmod +x bazel-0.24.1-installer-linux-x86_64.sh \
- && ./bazel-0.24.1-installer-linux-x86_64.sh
-
-RUN export TF_ROOT=/work/tf \
- && export PATH="$PATH:$HOME/bin" \
- && cd $TF_ROOT \
- && git clone https://github.com/tensorflow/tensorflow.git \
- && cd tensorflow \
- && git checkout r1.14 \
- && echo "\n\n\n\n\n\n\n\n\n" | ./configure \
- && bazel build //tensorflow:libtensorflow_framework.so //tensorflow:libtensorflow_cc.so //tensorflow/tools/pip_package:build_pip_package
-
-RUN export TF_ROOT=/work/tf \
- && cd $TF_ROOT/tensorflow \
- && bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg \
- && pip3 install $(find /tmp/tensorflow_pkg/ -type f -iname "tensorflow*.whl") \
- && ./tensorflow/contrib/makefile/build_all_linux.sh \
- && mkdir -p /work/tf/installdir/lib \
- && mkdir -p /work/tf/installdir/include \
- && cp bazel-bin/tensorflow/libtensorflow_cc.so                                          /work/tf/installdir/lib \
- && cp bazel-bin/tensorflow/libtensorflow_framework.so                                   /work/tf/installdir/lib \
- && cp tensorflow/contrib/makefile/gen/protobuf/lib/libprotobuf.a                        /work/tf/installdir/lib \
- && cp tensorflow/contrib/makefile/downloads/nsync/builds/default.linux.c++11/*.a        /work/tf/installdir/lib \
- && cp -r bazel-genfiles/*                                                               /work/tf/installdir/include/ \
- && cp -r tensorflow/cc                                                                  /work/tf/installdir/include/tensorflow/ \
- && cp -r tensorflow/core                                                                /work/tf/installdir/include/tensorflow/ \
- && cp -r third_party                                                                    /work/tf/installdir/include/ \
- && cp -r tensorflow/contrib/makefile/gen/protobuf/include/*                             /work/tf/installdir/include/ \
- && cp -r tensorflow/contrib/makefile/downloads/eigen/Eigen                              /work/tf/installdir/include/ \
- && cp -r tensorflow/contrib/makefile/downloads/eigen/unsupported                        /work/tf/installdir/include/ \
- && cp -r tensorflow/contrib/makefile/downloads/eigen/signature_of_eigen3_matrix_library /work/tf/installdir/include/ \
- && cd ${TF_ROOT}/tensorflow/tensorflow/contrib/makefile/downloads/absl \
- && find absl/ -name '*.h' -exec cp --parents \{\}                                       /work/tf/installdir/include/ \; \
- && find absl/ -name '*.inc' -exec cp --parents \{\}                                     /work/tf/installdir/include/ \; \
- && find /work/tf/installdir/ -name "*.cc" -type f -delete 
-
-RUN echo "Create symlinks for tensorflow libs" \
- && ln -s /work/tf/installdir/lib/libtensorflow_cc.so /work/tf/installdir/lib/libtensorflow_cc.so.1 \
- && ln -s /work/tf/installdir/lib/libtensorflow_framework.so /work/tf/installdir/lib/libtensorflow_framework.so.1
-
-# ----------------------------------------------------------------------------
-# Build OTB
-# ----------------------------------------------------------------------------
-RUN mkdir -p /work/otb/build \
- && cd /work/otb \
- && git clone https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb.git otb \
- && cd otb \
- && git checkout 0df44b312d64d6c3890b65d3790d4a17d0fd5f23 \
- && cd /work/otb/build \
- && cmake /work/otb/otb/SuperBuild \
-        -DUSE_SYSTEM_BOOST=ON \
-        -DUSE_SYSTEM_CURL=ON \
-        -DUSE_SYSTEM_EXPAT=ON \
-        -DUSE_SYSTEM_FFTW=ON \
-        -DUSE_SYSTEM_FREETYPE=ON \
-        -DUSE_SYSTEM_GDAL=ON \
-        -DUSE_SYSTEM_GEOS=ON \
-        -DUSE_SYSTEM_GEOTIFF=ON \
-        -DUSE_SYSTEM_GLEW=ON \
-        -DUSE_SYSTEM_GLFW=ON \
-        -DUSE_SYSTEM_GLUT=ON \
-        -DUSE_SYSTEM_GSL=ON \
-        -DUSE_SYSTEM_ITK=ON \
-        -DUSE_SYSTEM_LIBKML=ON \
-        -DUSE_SYSTEM_LIBSVM=ON \
-        -DUSE_SYSTEM_MUPARSER=ON \
-        -DUSE_SYSTEM_MUPARSERX=ON \
-        -DUSE_SYSTEM_OPENCV=ON \
-        -DUSE_SYSTEM_OPENTHREADS=ON \
-        -DUSE_SYSTEM_OSSIM=ON \
-        -DUSE_SYSTEM_PNG=ON \
-        -DUSE_SYSTEM_QT5=ON \
-        -DUSE_SYSTEM_QWT=ON \
-        -DUSE_SYSTEM_TINYXML=ON \
-        -DUSE_SYSTEM_ZLIB=ON \
-		-DUSE_SYSTEM_SWIG=OFF \
- && cd /work/otb/otb/Modules/Remote \
- && git clone https://github.com/remicres/otbtf.git \
- && cd /work/otb/build/OTB/build \
- && cmake /work/otb/otb \
-        -DOTB_WRAP_PYTHON=ON \
-        -DModule_Mosaic=ON \
-        -DModule_OTBTensorflow=ON \
-        -DOTB_USE_TENSORFLOW=ON \
-        -Dopencv_INCLUDE_DIR=/usr/include \
-        -DTENSORFLOW_CC_LIB=/work/tf/installdir/lib/libtensorflow_cc.so \
-        -DTENSORFLOW_FRAMEWORK_LIB=/work/tf/installdir/lib/libtensorflow_framework.so \
-        -Dtensorflow_include_dir=/work/tf/installdir/include/ \
- && cd /work/otb/build/ \
- && make -j $(grep -c ^processor /proc/cpuinfo)
-
-# ----------------------------------------------------------------------------
-# Install GDAL
-# ----------------------------------------------------------------------------
-RUN apt-get update -y \
-  && apt -y install \
-	software-properties-common \
-	dirmngr \
-	apt-transport-https \
-	lsb-release \
-        gdal-bin \
-  && rm -rf /var/lib/apt/lists/*
-
-# ----------------------------------------------------------------------------
-# Add user otbuser # Replace 1001 with your user / group id
-# ----------------------------------------------------------------------------
-
-RUN export uid=1001 gid=1001 && \
-    mkdir -p /home/otbuser && \
-    echo "otbuser:x:${uid}:${gid}:otbuser,,,:/home/otbuser:/bin/bash" >> /etc/passwd && \
-    echo "otbuser:x:${uid}:" >> /etc/group && \
-    echo "otbuser ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/otbuser && \
-    chmod 0440 /etc/sudoers.d/otbuser && \
-    chown ${uid}:${gid} -R /home/otbuser
-
-USER /home/otbuser
-ENV HOME /home/otbuser
-ENV OTB_MAX_RAM_HINT=512
-ENV PATH "$PATH:/work/otb/superbuild_install/bin/"
-ENV PYTHONPATH="/work/otb/superbuild_install/lib/otb/python:$PYTHONPATH"
-ENV OTB_APPLICATION_PATH="/work/otb/superbuild_install/lib/otb/applications"
-ENV LD_LIBRARY_PATH "$LD_LIBRARY_PATH:/work/otb/superbuild_install/lib/:/work/tf/installdir/lib/"
-WORKDIR /home/otbuser
-
-# ----------------------------------------------------------------------------
-# Exemple :
-# docker build --tag otbtf_image
-# docker run -u otbuser -v $(pwd):/home/otbuser otbtf_image otbcli_ExtractROI
-# docker run -u otbuser -ti -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -v $(pwd):/home/otbuser otbtf_image otbgui_ExtractROI
-# ----------------------------------------------------------------------------
diff --git a/tools/dockerfiles/r1.7/bionic.tf-r1.14.otb-7.0-GPU/Dockerfile b/tools/dockerfiles/r1.7/bionic.tf-r1.14.otb-7.0-GPU/Dockerfile
deleted file mode 100644
index 618635ccd6d6d6be93d026773ae46dfaa869b09b..0000000000000000000000000000000000000000
--- a/tools/dockerfiles/r1.7/bionic.tf-r1.14.otb-7.0-GPU/Dockerfile
+++ /dev/null
@@ -1,242 +0,0 @@
-FROM nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04
-
-MAINTAINER Remi Cresson <remi.cresson[at]irstea[dot]fr>
-
-RUN apt-get update -y \
- && apt-get upgrade -y \
- && apt-get install -y --no-install-recommends \
-        sudo \
-        ca-certificates \
-        curl \
-        make \
-        cmake \
-        g++ \
-        gcc \
-        git \
-        libtool \
-        swig \
-        xvfb \
-        wget \
-        autoconf \
-        automake \
-        pkg-config \
-        zip \
-        zlib1g-dev \
-        unzip \
- && rm -rf /var/lib/apt/lists/*
-
-# ----------------------------------------------------------------------------
-# OTB and TensorFlow dependencies
-# ----------------------------------------------------------------------------
-RUN apt-get update -y \
- && apt-get upgrade -y \
- && apt-get install -y --no-install-recommends \
-        freeglut3-dev \
-        libboost-date-time-dev \
-        libboost-filesystem-dev \
-        libboost-graph-dev \
-        libboost-program-options-dev \
-        libboost-system-dev \
-        libboost-thread-dev \
-        libcurl4-gnutls-dev \
-        libexpat1-dev \
-        libfftw3-dev \
-        libgdal-dev \
-        libgeotiff-dev \
-        libglew-dev \
-        libglfw3-dev \
-        libgsl-dev \
-        libinsighttoolkit4-dev \
-        libkml-dev \
-        libmuparser-dev \
-        libmuparserx-dev \
-        libopencv-core-dev \
-        libopencv-ml-dev \
-        libopenthreads-dev \
-        libossim-dev \
-        libpng-dev \
-        libqt5opengl5-dev \
-        libqwt-qt5-dev \
-        libsvm-dev \
-        libtinyxml-dev \
-        qtbase5-dev \
-        qttools5-dev \
-        default-jdk \
-        python3-pip \
-        python3.6-dev \
-        python3.6-gdal \
-        python3-setuptools \
-        libxmu-dev \
-        libxi-dev \
-        qttools5-dev-tools \
-        bison \
-        software-properties-common \
-        dirmngr \
-        apt-transport-https \
-        lsb-release \
-        gdal-bin \
- && rm -rf /var/lib/apt/lists/*
-
-# ----------------------------------------------------------------------------
-# Python packages
-# ----------------------------------------------------------------------------
-RUN ln -s /usr/bin/python3 /usr/bin/python \
- && python3 -m pip install --upgrade pip \
- && python3 -m pip install pip six numpy wheel mock keras future
-
-# ----------------------------------------------------------------------------
-# Build TensorFlow
-# ----------------------------------------------------------------------------
-RUN export TF_ROOT=/work/tf \
- && mkdir -p ${TF_ROOT}/bazel \
- && cd ${TF_ROOT}/bazel \
- && wget https://github.com/bazelbuild/bazel/releases/download/0.24.1/bazel-0.24.1-installer-linux-x86_64.sh \
- && chmod +x bazel-0.24.1-installer-linux-x86_64.sh \
- && ./bazel-0.24.1-installer-linux-x86_64.sh
-
-RUN export TF_ROOT=/work/tf \
- && export PATH="$PATH:$HOME/bin" \
- && cd $TF_ROOT \
- && git clone https://github.com/tensorflow/tensorflow.git \
- && cd tensorflow \
- && git checkout r1.14 \
- && export PYTHON_BIN_PATH=$(which python) \
- && export PYTHON_LIB_PATH="$($PYTHON_BIN_PATH -c 'import site; print(site.getsitepackages()[0])')" \
- && export PYTHONPATH=/usr/lib/ \
- && export PYTHON_ARG=/usr/lib/ \
- && export CUDA_TOOLKIT_PATH=/usr/local/cuda-10.1/ \
- && export CUDNN_INSTALL_PATH=/usr/ \
- && export TF_NEED_GCP=0 \
- && export TF_NEED_CUDA=1 \
- && export TF_CUDA_VERSION="$($CUDA_TOOLKIT_PATH/bin/nvcc --version | sed -n 's/^.*release \(.*\),.*/\1/p')" \
- && export TF_CUDA_COMPUTE_CAPABILITIES=6.1,5.2,3.5 \
- && export TF_NEED_HDFS=0 \
- && export TF_NEED_OPENCL=0 \
- && export TF_NEED_JEMALLOC=1 \
- && export TF_ENABLE_XLA=0 \
- && export TF_NEED_VERBS=0 \
- && export TF_CUDA_CLANG=0 \
- && export TF_CUDNN_VERSION="$(sed -n 's/^#define CUDNN_MAJOR\s*\(.*\).*/\1/p' $CUDNN_INSTALL_PATH/include/cudnn.h)" \
- && export TF_NEED_MKL=0 \
- && export TF_DOWNLOAD_MKL=0 \
- && export TF_NEED_AWS=0 \
- && export TF_NEED_MPI=0 \
- && export TF_NEED_GDR=0 \
- && export TF_NEED_S3=0 \
- && export TF_NEED_OPENCL_SYCL=0 \
- && export TF_SET_ANDROID_WORKSPACE=0 \
- && export TF_NEED_COMPUTECPP=0 \
- && export GCC_HOST_COMPILER_PATH=$(which gcc) \
- && export CC_OPT_FLAGS="-march=native" \
- && export TF_NEED_KAFKA=0 \
- && export TF_NEED_TENSORRT=0 \
- && export TF_NCCL_VERSION=2.4 \
- && export GCC_HOST_COMPILER_PATH=$(which gcc) \
- && export CC_OPT_FLAGS="-march=native" \
- && ./configure \
- && bazel build //tensorflow:libtensorflow_framework.so //tensorflow:libtensorflow_cc.so //tensorflow/tools/pip_package:build_pip_package
-
-RUN export TF_ROOT=/work/tf \
- && cd $TF_ROOT/tensorflow \
- && bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg \
- && pip3 install $(find /tmp/tensorflow_pkg/ -type f -iname "tensorflow*.whl") \
- && ./tensorflow/contrib/makefile/build_all_linux.sh \
- && mkdir -p /work/tf/installdir/lib \
- && mkdir -p /work/tf/installdir/include \
- && cp bazel-bin/tensorflow/libtensorflow_cc.so                                          /work/tf/installdir/lib \
- && cp bazel-bin/tensorflow/libtensorflow_framework.so                                   /work/tf/installdir/lib \
- && cp tensorflow/contrib/makefile/gen/protobuf/lib/libprotobuf.a                        /work/tf/installdir/lib \
- && cp tensorflow/contrib/makefile/downloads/nsync/builds/default.linux.c++11/*.a        /work/tf/installdir/lib \
- && cp -r bazel-genfiles/*                                                               /work/tf/installdir/include/ \
- && cp -r tensorflow/cc                                                                  /work/tf/installdir/include/tensorflow/ \
- && cp -r tensorflow/core                                                                /work/tf/installdir/include/tensorflow/ \
- && cp -r third_party                                                                    /work/tf/installdir/include/ \
- && cp -r tensorflow/contrib/makefile/gen/protobuf/include/*                             /work/tf/installdir/include/ \
- && cp -r tensorflow/contrib/makefile/downloads/eigen/Eigen                              /work/tf/installdir/include/ \
- && cp -r tensorflow/contrib/makefile/downloads/eigen/unsupported                        /work/tf/installdir/include/ \
- && cp -r tensorflow/contrib/makefile/downloads/eigen/signature_of_eigen3_matrix_library /work/tf/installdir/include/ \
- && cd ${TF_ROOT}/tensorflow/tensorflow/contrib/makefile/downloads/absl \
- && find absl/ -name '*.h' -exec cp --parents \{\}                                       /work/tf/installdir/include/ \; \
- && find absl/ -name '*.inc' -exec cp --parents \{\}                                     /work/tf/installdir/include/ \; \
- && find /work/tf/installdir/ -name "*.cc" -type f -delete \
- && echo "Create symlinks for tensorflow libs" \
- && ln -s /work/tf/installdir/lib/libtensorflow_cc.so /work/tf/installdir/lib/libtensorflow_cc.so.1 \
- && ln -s /work/tf/installdir/lib/libtensorflow_framework.so /work/tf/installdir/lib/libtensorflow_framework.so.1
-
-# ----------------------------------------------------------------------------
-# Build OTB: Stage 1 (clone)
-# ----------------------------------------------------------------------------
-RUN mkdir -p /work/otb \
- && cd /work/otb \
- && git clone https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb.git otb \
- && cd otb \
- && git checkout release-7.0
-
-# ----------------------------------------------------------------------------
-# Build OTB: Stage 2 (superbuild)
-# ----------------------------------------------------------------------------
-RUN mkdir -p /work/otb/build \
- && cd /work/otb/build \
- && cmake /work/otb/otb/SuperBuild \
-        -DUSE_SYSTEM_BOOST=ON \
-        -DUSE_SYSTEM_CURL=ON \
-        -DUSE_SYSTEM_EXPAT=ON \
-        -DUSE_SYSTEM_FFTW=ON \
-        -DUSE_SYSTEM_FREETYPE=ON \
-        -DUSE_SYSTEM_GDAL=ON \
-        -DUSE_SYSTEM_GEOS=ON \
-        -DUSE_SYSTEM_GEOTIFF=ON \
-        -DUSE_SYSTEM_GLEW=ON \
-        -DUSE_SYSTEM_GLFW=ON \
-        -DUSE_SYSTEM_GLUT=ON \
-        -DUSE_SYSTEM_GSL=ON \
-        -DUSE_SYSTEM_ITK=ON \
-        -DUSE_SYSTEM_LIBKML=ON \
-        -DUSE_SYSTEM_LIBSVM=ON \
-        -DUSE_SYSTEM_MUPARSER=ON \
-        -DUSE_SYSTEM_MUPARSERX=ON \
-        -DUSE_SYSTEM_OPENCV=ON \
-        -DUSE_SYSTEM_OPENTHREADS=ON \
-        -DUSE_SYSTEM_OSSIM=ON \
-        -DUSE_SYSTEM_PNG=ON \
-        -DUSE_SYSTEM_QT5=ON \
-        -DUSE_SYSTEM_QWT=ON \
-        -DUSE_SYSTEM_TINYXML=ON \
-        -DUSE_SYSTEM_ZLIB=ON \
-        -DUSE_SYSTEM_SWIG=OFF \
-        -DOTB_WRAP_PYTHON=OFF \
- && make -j $(grep -c ^processor /proc/cpuinfo)
-
-# ----------------------------------------------------------------------------
-# Build OTB: Stage 3 (bindings)
-# ----------------------------------------------------------------------------
-RUN cd /work/otb/otb/Modules/Remote \
- && git clone https://github.com/remicres/otbtf.git \
- && cd /work/otb/build/OTB/build \
- && cmake /work/otb/otb \
-        -DOTB_WRAP_PYTHON=ON \
-        -DPYTHON_EXECUTABLE=/usr/bin/python3.6 \
-        -Dopencv_INCLUDE_DIR=/usr/include \
-        -DModule_OTBTensorflow=ON \
-        -DOTB_USE_TENSORFLOW=ON \
-        -DTENSORFLOW_CC_LIB=/work/tf/installdir/lib/libtensorflow_cc.so \
-        -DTENSORFLOW_FRAMEWORK_LIB=/work/tf/installdir/lib/libtensorflow_framework.so \
-        -Dtensorflow_include_dir=/work/tf/installdir/include/ \
- && cd /work/otb/build/ \
- && make -j $(grep -c ^processor /proc/cpuinfo)
-
-# ----------------------------------------------------------------------------
-# Add important environment variables
-# ----------------------------------------------------------------------------
-ENV PATH="$PATH:/work/otb/superbuild_install/bin/"
-ENV PYTHONPATH="/work/otb/superbuild_install/lib/otb/python:$PYTHONPATH"
-ENV OTB_APPLICATION_PATH="/work/otb/superbuild_install/lib/otb/applications"
-ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/work/otb/superbuild_install/lib/:/work/tf/installdir/lib/"
-
-# ----------------------------------------------------------------------------
-# Exemple :
-# docker build --tag otbtf_image
-# docker run -v /path/to/host/:/path/to/mount/ otbtf_image otbcli_ExtractROI
-# docker run -ti -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY otbtf_image otbgui_ExtractROI
-# ----------------------------------------------------------------------------
-
diff --git a/tools/dockerfiles/r1.7/bionic.tf-r1.14.otb-7.0/Dockerfile b/tools/dockerfiles/r1.7/bionic.tf-r1.14.otb-7.0/Dockerfile
deleted file mode 100644
index 7995b0c9bf24a660577b425f2e0b7f961dc8e48e..0000000000000000000000000000000000000000
--- a/tools/dockerfiles/r1.7/bionic.tf-r1.14.otb-7.0/Dockerfile
+++ /dev/null
@@ -1,209 +0,0 @@
-FROM ubuntu:18.04
-
-MAINTAINER Remi Cresson <remi.cresson[at]irstea[dot]fr>
-
-RUN apt-get update -y \
- && apt-get upgrade -y \
- && apt-get install -y --no-install-recommends \
-        sudo \
-        ca-certificates \
-        curl \
-        make \
-        cmake \
-        g++ \
-        gcc \
-        git \
-        libtool \
-        swig \
-        xvfb \
-        wget \
-        autoconf \
-        automake \
-        pkg-config \
-        zip \
-        zlib1g-dev \
-        unzip \
- && rm -rf /var/lib/apt/lists/*
-
-# ----------------------------------------------------------------------------
-# OTB and TensorFlow dependencies
-# ----------------------------------------------------------------------------
-RUN apt-get update -y \
- && apt-get upgrade -y \
- && apt-get install -y --no-install-recommends \
-        freeglut3-dev \
-        libboost-date-time-dev \
-        libboost-filesystem-dev \
-        libboost-graph-dev \
-        libboost-program-options-dev \
-        libboost-system-dev \
-        libboost-thread-dev \
-        libcurl4-gnutls-dev \
-        libexpat1-dev \
-        libfftw3-dev \
-        libgdal-dev \
-        libgeotiff-dev \
-        libglew-dev \
-        libglfw3-dev \
-        libgsl-dev \
-        libinsighttoolkit4-dev \
-        libkml-dev \
-        libmuparser-dev \
-        libmuparserx-dev \
-        libopencv-core-dev \
-        libopencv-ml-dev \
-        libopenthreads-dev \
-        libossim-dev \
-        libpng-dev \
-        libqt5opengl5-dev \
-        libqwt-qt5-dev \
-        libsvm-dev \
-        libtinyxml-dev \
-        qtbase5-dev \
-        qttools5-dev \
-        default-jdk \
-        python3-pip \
-        python3.6-dev \
-        python3.6-gdal \
-        python3-setuptools \
-        libxmu-dev \
-        libxi-dev \
-        qttools5-dev-tools \
-        bison \
-        software-properties-common \
-        dirmngr \
-        apt-transport-https \
-        lsb-release \
-        gdal-bin \
- && rm -rf /var/lib/apt/lists/*
-
-# ----------------------------------------------------------------------------
-# Python packages
-# ----------------------------------------------------------------------------
-RUN ln -s /usr/bin/python3 /usr/bin/python \
- && python3 -m pip install --upgrade pip \
- && python3 -m pip install pip six numpy wheel mock keras future
-
-# ----------------------------------------------------------------------------
-# Build TensorFlow
-# ----------------------------------------------------------------------------
-RUN export TF_ROOT=/work/tf \
- && mkdir -p ${TF_ROOT}/bazel \
- && cd ${TF_ROOT}/bazel \
- && wget https://github.com/bazelbuild/bazel/releases/download/0.24.1/bazel-0.24.1-installer-linux-x86_64.sh \
- && chmod +x bazel-0.24.1-installer-linux-x86_64.sh \
- && ./bazel-0.24.1-installer-linux-x86_64.sh
-
-RUN export TF_ROOT=/work/tf \
- && export PATH="$PATH:$HOME/bin" \
- && cd $TF_ROOT \
- && git clone https://github.com/tensorflow/tensorflow.git \
- && cd tensorflow \
- && git checkout r1.14 \
- && echo "\n\n\n\n\n\n\n\n\n" | ./configure \
- && bazel build //tensorflow:libtensorflow_framework.so //tensorflow:libtensorflow_cc.so //tensorflow/tools/pip_package:build_pip_package
-
-RUN export TF_ROOT=/work/tf \
- && cd $TF_ROOT/tensorflow \
- && bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg \
- && pip3 install $(find /tmp/tensorflow_pkg/ -type f -iname "tensorflow*.whl") \
- && ./tensorflow/contrib/makefile/build_all_linux.sh \
- && mkdir -p /work/tf/installdir/lib \
- && mkdir -p /work/tf/installdir/include \
- && cp bazel-bin/tensorflow/libtensorflow_cc.so                                          /work/tf/installdir/lib \
- && cp bazel-bin/tensorflow/libtensorflow_framework.so                                   /work/tf/installdir/lib \
- && cp tensorflow/contrib/makefile/gen/protobuf/lib/libprotobuf.a                        /work/tf/installdir/lib \
- && cp tensorflow/contrib/makefile/downloads/nsync/builds/default.linux.c++11/*.a        /work/tf/installdir/lib \
- && cp -r bazel-genfiles/*                                                               /work/tf/installdir/include/ \
- && cp -r tensorflow/cc                                                                  /work/tf/installdir/include/tensorflow/ \
- && cp -r tensorflow/core                                                                /work/tf/installdir/include/tensorflow/ \
- && cp -r third_party                                                                    /work/tf/installdir/include/ \
- && cp -r tensorflow/contrib/makefile/gen/protobuf/include/*                             /work/tf/installdir/include/ \
- && cp -r tensorflow/contrib/makefile/downloads/eigen/Eigen                              /work/tf/installdir/include/ \
- && cp -r tensorflow/contrib/makefile/downloads/eigen/unsupported                        /work/tf/installdir/include/ \
- && cp -r tensorflow/contrib/makefile/downloads/eigen/signature_of_eigen3_matrix_library /work/tf/installdir/include/ \
- && cd ${TF_ROOT}/tensorflow/tensorflow/contrib/makefile/downloads/absl \
- && find absl/ -name '*.h' -exec cp --parents \{\}                                       /work/tf/installdir/include/ \; \
- && find absl/ -name '*.inc' -exec cp --parents \{\}                                     /work/tf/installdir/include/ \; \
- && find /work/tf/installdir/ -name "*.cc" -type f -delete 
-
-RUN echo "Create symlinks for tensorflow libs" \
- && ln -s /work/tf/installdir/lib/libtensorflow_cc.so /work/tf/installdir/lib/libtensorflow_cc.so.1 \
- && ln -s /work/tf/installdir/lib/libtensorflow_framework.so /work/tf/installdir/lib/libtensorflow_framework.so.1
-
-# ----------------------------------------------------------------------------
-# Build OTB: Stage 1 (clone)
-# ----------------------------------------------------------------------------
-RUN mkdir -p /work/otb \
- && cd /work/otb \
- && git clone https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb.git otb \
- && cd otb \
- && git checkout release-7.0
-
-# ----------------------------------------------------------------------------
-# Build OTB: Stage 2 (superbuild)
-# ----------------------------------------------------------------------------
-RUN mkdir -p /work/otb/build \
- && cd /work/otb/build \
- && cmake /work/otb/otb/SuperBuild \
-        -DUSE_SYSTEM_BOOST=ON \
-        -DUSE_SYSTEM_CURL=ON \
-        -DUSE_SYSTEM_EXPAT=ON \
-        -DUSE_SYSTEM_FFTW=ON \
-        -DUSE_SYSTEM_FREETYPE=ON \
-        -DUSE_SYSTEM_GDAL=ON \
-        -DUSE_SYSTEM_GEOS=ON \
-        -DUSE_SYSTEM_GEOTIFF=ON \
-        -DUSE_SYSTEM_GLEW=ON \
-        -DUSE_SYSTEM_GLFW=ON \
-        -DUSE_SYSTEM_GLUT=ON \
-        -DUSE_SYSTEM_GSL=ON \
-        -DUSE_SYSTEM_ITK=ON \
-        -DUSE_SYSTEM_LIBKML=ON \
-        -DUSE_SYSTEM_LIBSVM=ON \
-        -DUSE_SYSTEM_MUPARSER=ON \
-        -DUSE_SYSTEM_MUPARSERX=ON \
-        -DUSE_SYSTEM_OPENCV=ON \
-        -DUSE_SYSTEM_OPENTHREADS=ON \
-        -DUSE_SYSTEM_OSSIM=ON \
-        -DUSE_SYSTEM_PNG=ON \
-        -DUSE_SYSTEM_QT5=ON \
-        -DUSE_SYSTEM_QWT=ON \
-        -DUSE_SYSTEM_TINYXML=ON \
-        -DUSE_SYSTEM_ZLIB=ON \
-        -DUSE_SYSTEM_SWIG=OFF \
-        -DOTB_WRAP_PYTHON=OFF \
- && make -j $(grep -c ^processor /proc/cpuinfo)
-
-# ----------------------------------------------------------------------------
-# Build OTB: Stage 3 (bindings)
-# ----------------------------------------------------------------------------
-RUN cd /work/otb/otb/Modules/Remote \
- && git clone https://github.com/remicres/otbtf.git \
- && cd /work/otb/build/OTB/build \
- && cmake /work/otb/otb \
-        -DOTB_WRAP_PYTHON=ON \
-        -DPYTHON_EXECUTABLE=/usr/bin/python3.6 \
-        -Dopencv_INCLUDE_DIR=/usr/include \
-        -DModule_OTBTensorflow=ON \
-        -DOTB_USE_TENSORFLOW=ON \
-        -DTENSORFLOW_CC_LIB=/work/tf/installdir/lib/libtensorflow_cc.so \
-        -DTENSORFLOW_FRAMEWORK_LIB=/work/tf/installdir/lib/libtensorflow_framework.so \
-        -Dtensorflow_include_dir=/work/tf/installdir/include/ \
- && cd /work/otb/build/ \
- && make -j $(grep -c ^processor /proc/cpuinfo)
-
-# ----------------------------------------------------------------------------
-# Add important environment variables
-# ----------------------------------------------------------------------------
-ENV PATH="$PATH:/work/otb/superbuild_install/bin/"
-ENV PYTHONPATH="/work/otb/superbuild_install/lib/otb/python:$PYTHONPATH"
-ENV OTB_APPLICATION_PATH="/work/otb/superbuild_install/lib/otb/applications"
-ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/work/otb/superbuild_install/lib/:/work/tf/installdir/lib/"
-
-# ----------------------------------------------------------------------------
-# Exemple :
-# docker build --tag otbtf_image
-# docker run -v /path/to/host/:/path/to/mount/ otbtf_image otbcli_ExtractROI
-# docker run -ti -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY otbtf_image otbgui_ExtractROI
-# ----------------------------------------------------------------------------
diff --git a/tools/dockerfiles/r2.0/bionic.tf-r2.1.otb-7.1-CPU-MKL/Dockerfile b/tools/dockerfiles/r2.0/bionic.tf-r2.1.otb-7.1-CPU-MKL/Dockerfile
deleted file mode 100644
index 5501a3a509a777e63d153683e7e82b62ed2035f2..0000000000000000000000000000000000000000
--- a/tools/dockerfiles/r2.0/bionic.tf-r2.1.otb-7.1-CPU-MKL/Dockerfile
+++ /dev/null
@@ -1,254 +0,0 @@
-FROM ubuntu:18.04
-
-MAINTAINER Remi Cresson <remi.cresson[at]irstea[dot]fr>
-
-RUN apt-get update -y \
- && apt-get upgrade -y \
- && apt-get install -y --no-install-recommends \
-        sudo \
-        ca-certificates \
-        curl \
-        make \
-        cmake \
-        g++ \
-        gcc \
-        git \
-        libtool \
-        swig \
-        xvfb \
-        wget \
-        autoconf \
-        automake \
-        pkg-config \
-        zip \
-        zlib1g-dev \
-        unzip \
- && rm -rf /var/lib/apt/lists/*
-
-# ----------------------------------------------------------------------------
-# OTB and TensorFlow dependencies
-# ----------------------------------------------------------------------------
-RUN apt-get update -y \
- && apt-get upgrade -y \
- && apt-get install -y --no-install-recommends \
-        freeglut3-dev \
-        libboost-date-time-dev \
-        libboost-filesystem-dev \
-        libboost-graph-dev \
-        libboost-program-options-dev \
-        libboost-system-dev \
-        libboost-thread-dev \
-        libcurl4-gnutls-dev \
-        libexpat1-dev \
-        libfftw3-dev \
-        libgdal-dev \
-        libgeotiff-dev \
-        libglew-dev \
-        libglfw3-dev \
-        libgsl-dev \
-        libinsighttoolkit4-dev \
-        libkml-dev \
-        libmuparser-dev \
-        libmuparserx-dev \
-        libopencv-core-dev \
-        libopencv-ml-dev \
-        libopenthreads-dev \
-        libossim-dev \
-        libpng-dev \
-        libqt5opengl5-dev \
-        libqwt-qt5-dev \
-        libsvm-dev \
-        libtinyxml-dev \
-        qtbase5-dev \
-        qttools5-dev \
-        default-jdk \
-        python3-pip \
-        python3.6-dev \
-        python3.6-gdal \
-        python3-setuptools \
-        libxmu-dev \
-        libxi-dev \
-        qttools5-dev-tools \
-        bison \
-        software-properties-common \
-        dirmngr \
-        apt-transport-https \
-        lsb-release \
-        gdal-bin \
- && rm -rf /var/lib/apt/lists/*
-
-# ----------------------------------------------------------------------------
-# Python packages
-# ----------------------------------------------------------------------------
-RUN ln -s /usr/bin/python3 /usr/bin/python \
- && python3 -m pip install --upgrade pip \
- && python3 -m pip install pip six numpy wheel mock keras keras_applications keras_preprocessing future setuptools
-
-# ----------------------------------------------------------------------------
-# Build TensorFlow
-# ----------------------------------------------------------------------------
-RUN export TF_ROOT=/work/tf \
- && mkdir -p ${TF_ROOT}/bazel \
- && cd ${TF_ROOT}/bazel \
- && wget https://github.com/bazelbuild/bazel/releases/download/0.29.1/bazel-0.29.1-installer-linux-x86_64.sh \
- && chmod +x bazel-0.29.1-installer-linux-x86_64.sh \
- && ./bazel-0.29.1-installer-linux-x86_64.sh
-
-RUN export TF_ROOT=/work/tf \
- && export PATH="$PATH:$HOME/bin" \
- && cd $TF_ROOT \
- && git clone https://github.com/tensorflow/tensorflow.git \
- && cd tensorflow \
- && git checkout r2.1 \
- && export PYTHON_BIN_PATH=$(which python) \
- && export PYTHON_LIB_PATH="$($PYTHON_BIN_PATH -c 'import site; print(site.getsitepackages()[0])')" \
- && export PYTHONPATH=/usr/lib/ \
- && export PYTHON_ARG=/usr/lib/ \
- && export TF_NEED_GCP=0 \
- && export TF_NEED_CUDA=0 \
- && export TF_NEED_HDFS=0 \
- && export TF_NEED_OPENCL=0 \
- && export TF_NEED_JEMALLOC=1 \
- && export TF_ENABLE_XLA=0 \
- && export TF_NEED_VERBS=0 \
- && export TF_NEED_MKL=1 \
- && export TF_DOWNLOAD_MKL=1 \
- && export TF_NEED_AWS=0 \
- && export TF_NEED_MPI=0 \
- && export TF_NEED_GDR=0 \
- && export TF_NEED_S3=0 \
- && export TF_NEED_OPENCL_SYCL=0 \
- && export TF_SET_ANDROID_WORKSPACE=0 \
- && export TF_NEED_COMPUTECPP=0 \
- && export GCC_HOST_COMPILER_PATH=$(which gcc) \
- && export CC_OPT_FLAGS="-march=native" \
- && export TF_NEED_KAFKA=0 \
- && export TF_NEED_TENSORRT=0 \
- && export TF_NCCL_VERSION=2.4 \
- && export GCC_HOST_COMPILER_PATH=$(which gcc) \
- && export CC_OPT_FLAGS="-march=native" \
- && ./configure \
- && bazel build -c opt --copt=-march=native --copt=-mfpmath=both //tensorflow:libtensorflow_framework.so //tensorflow:libtensorflow_cc.so //tensorflow/tools/pip_package:build_pip_package --noincompatible_do_not_split_linking_cmdline
-
-# ----------------------------------------------------------------------------
-# Build protobuf
-# ----------------------------------------------------------------------------
-RUN export TF_ROOT=/work/tf \
- && mkdir -p $TF_ROOT/installdir \
- && cd $TF_ROOT \
- && wget https://github.com/google/protobuf/releases/download/v3.8.0/protobuf-cpp-3.8.0.tar.gz \
- && tar -xvf protobuf-cpp-3.8.0.tar.gz \
- && cd protobuf-3.8.0 \
- && ./configure --prefix=/work/tf/installdir/ \
- && make install -j $(grep -c ^processor /proc/cpuinfo)
-
-# ----------------------------------------------------------------------------
-# Prepare TF dependencies
-# ----------------------------------------------------------------------------
-RUN export TF_ROOT=/work/tf \
- && cd $TF_ROOT/tensorflow \
- && bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg \
- && pip3 install $(find /tmp/tensorflow_pkg/ -type f -iname "tensorflow*.whl") \
- && ./tensorflow/lite/tools/make/download_dependencies.sh \
- && ./tensorflow/lite/tools/make/build_lib.sh \
- && mkdir -p /work/tf/installdir/lib \
- && mkdir -p /work/tf/installdir/include \
- && cp bazel-bin/tensorflow/libtensorflow_cc.so* /work/tf/installdir/lib \
- && cp bazel-bin/tensorflow/libtensorflow_framework.so* /work/tf/installdir/lib \
- && cp -r bazel-genfiles/* /work/tf/installdir/include \
- && cp -r tensorflow/cc /work/tf/installdir/include/tensorflow \
- && cp -r tensorflow/core /work/tf/installdir/include/tensorflow \
- && cp -r third_party /work/tf/installdir/include \
- && cp -r bazel-tensorflow/external/eigen_archive/unsupported /work/tf/installdir/include \
- && cp -r bazel-tensorflow/external/eigen_archive/Eigen /work/tf/installdir/include \
- && cp -r tensorflow/lite/tools/make/downloads/absl/absl /work/tf/installdir/include 
-
-# ----------------------------------------------------------------------------
-# Build OTB: Stage 1 (clone)
-# ----------------------------------------------------------------------------
-RUN mkdir -p /work/otb \
- && cd /work/otb \
- && git clone https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb.git otb \
- && cd otb \
- && git checkout release-7.1
-
-# ----------------------------------------------------------------------------
-# Build OTB: Stage 2 (superbuild)
-# ----------------------------------------------------------------------------
-RUN mkdir -p /work/otb/build \
- && cd /work/otb/build \
- && cmake /work/otb/otb/SuperBuild \
-        -DUSE_SYSTEM_BOOST=ON \
-        -DUSE_SYSTEM_CURL=ON \
-        -DUSE_SYSTEM_EXPAT=ON \
-        -DUSE_SYSTEM_FFTW=ON \
-        -DUSE_SYSTEM_FREETYPE=ON \
-        -DUSE_SYSTEM_GDAL=ON \
-        -DUSE_SYSTEM_GEOS=ON \
-        -DUSE_SYSTEM_GEOTIFF=ON \
-        -DUSE_SYSTEM_GLEW=ON \
-        -DUSE_SYSTEM_GLFW=ON \
-        -DUSE_SYSTEM_GLUT=ON \
-        -DUSE_SYSTEM_GSL=ON \
-        -DUSE_SYSTEM_ITK=ON \
-        -DUSE_SYSTEM_LIBKML=ON \
-        -DUSE_SYSTEM_LIBSVM=ON \
-        -DUSE_SYSTEM_MUPARSER=ON \
-        -DUSE_SYSTEM_MUPARSERX=ON \
-        -DUSE_SYSTEM_OPENCV=ON \
-        -DUSE_SYSTEM_OPENTHREADS=ON \
-        -DUSE_SYSTEM_OSSIM=ON \
-        -DUSE_SYSTEM_PNG=ON \
-        -DUSE_SYSTEM_QT5=ON \
-        -DUSE_SYSTEM_QWT=ON \
-        -DUSE_SYSTEM_TINYXML=ON \
-        -DUSE_SYSTEM_ZLIB=ON \
-        -DUSE_SYSTEM_SWIG=OFF \
-        -DOTB_WRAP_PYTHON=OFF \
- && make -j $(grep -c ^processor /proc/cpuinfo)
-
-# ----------------------------------------------------------------------------
-# Build OTB: Stage 3 (bindings)
-# ----------------------------------------------------------------------------
-RUN cd /work/otb/otb/Modules/Remote \
- && git clone -b release-2.0-rc2 https://github.com/remicres/otbtf.git \
- && cd /work/otb/build/OTB/build \
- && cmake /work/otb/otb \
-        -DOTB_WRAP_PYTHON=ON \
-        -DPYTHON_EXECUTABLE=/usr/bin/python3.6 \
-        -Dopencv_INCLUDE_DIR=/usr/include \
-        -DModule_OTBTensorflow=ON \
-        -DOTB_USE_TENSORFLOW=ON \
-        -DTENSORFLOW_CC_LIB=/work/tf/installdir/lib/libtensorflow_cc.so \
-        -DTENSORFLOW_FRAMEWORK_LIB=/work/tf/installdir/lib/libtensorflow_framework.so \
-        -Dtensorflow_include_dir=/work/tf/installdir/include/ \
- && cd /work/otb/build/ \
- && make -j $(grep -c ^processor /proc/cpuinfo)
-
-# ----------------------------------------------------------------------------
-# Add important environment variables
-# ----------------------------------------------------------------------------
-ENV PATH="$PATH:/work/otb/superbuild_install/bin/"
-ENV PYTHONPATH="/work/otb/superbuild_install/lib/otb/python:/work/otb/otb/Modules/Remote/otbtf/python:$PYTHONPATH"
-ENV OTB_APPLICATION_PATH="/work/otb/superbuild_install/lib/otb/applications"
-ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/work/otb/superbuild_install/lib/:/work/tf/installdir/lib/"
-
-# ----------------------------------------------------------------------------
-# Clean
-# ----------------------------------------------------------------------------
-RUN rm -rf /tmp/* /root/.cache && apt-get clean
-
-# ----------------------------------------------------------------------------
-# Add one user
-# ----------------------------------------------------------------------------
-RUN useradd -s /bin/bash -m otbuser
-USER otbuser
-WORKDIR /home/otbuser
-
-# ----------------------------------------------------------------------------
-# Exemple :
-# docker build --tag otbtf_image
-# docker run -v /path/to/host/:/path/to/mount/ otbtf_image otbcli_ExtractROI
-# docker run -ti -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY otbtf_image otbgui_ExtractROI
-# ----------------------------------------------------------------------------
-
diff --git a/tools/dockerfiles/r2.0/bionic.tf-r2.1.otb-7.1-CPU/Dockerfile b/tools/dockerfiles/r2.0/bionic.tf-r2.1.otb-7.1-CPU/Dockerfile
deleted file mode 100644
index 15a65606932cb608d098d01aadffcdfb7a75ca7b..0000000000000000000000000000000000000000
--- a/tools/dockerfiles/r2.0/bionic.tf-r2.1.otb-7.1-CPU/Dockerfile
+++ /dev/null
@@ -1,254 +0,0 @@
-FROM ubuntu:18.04
-
-MAINTAINER Remi Cresson <remi.cresson[at]irstea[dot]fr>
-
-RUN apt-get update -y \
- && apt-get upgrade -y \
- && apt-get install -y --no-install-recommends \
-        sudo \
-        ca-certificates \
-        curl \
-        make \
-        cmake \
-        g++ \
-        gcc \
-        git \
-        libtool \
-        swig \
-        xvfb \
-        wget \
-        autoconf \
-        automake \
-        pkg-config \
-        zip \
-        zlib1g-dev \
-        unzip \
- && rm -rf /var/lib/apt/lists/*
-
-# ----------------------------------------------------------------------------
-# OTB and TensorFlow dependencies
-# ----------------------------------------------------------------------------
-RUN apt-get update -y \
- && apt-get upgrade -y \
- && apt-get install -y --no-install-recommends \
-        freeglut3-dev \
-        libboost-date-time-dev \
-        libboost-filesystem-dev \
-        libboost-graph-dev \
-        libboost-program-options-dev \
-        libboost-system-dev \
-        libboost-thread-dev \
-        libcurl4-gnutls-dev \
-        libexpat1-dev \
-        libfftw3-dev \
-        libgdal-dev \
-        libgeotiff-dev \
-        libglew-dev \
-        libglfw3-dev \
-        libgsl-dev \
-        libinsighttoolkit4-dev \
-        libkml-dev \
-        libmuparser-dev \
-        libmuparserx-dev \
-        libopencv-core-dev \
-        libopencv-ml-dev \
-        libopenthreads-dev \
-        libossim-dev \
-        libpng-dev \
-        libqt5opengl5-dev \
-        libqwt-qt5-dev \
-        libsvm-dev \
-        libtinyxml-dev \
-        qtbase5-dev \
-        qttools5-dev \
-        default-jdk \
-        python3-pip \
-        python3.6-dev \
-        python3.6-gdal \
-        python3-setuptools \
-        libxmu-dev \
-        libxi-dev \
-        qttools5-dev-tools \
-        bison \
-        software-properties-common \
-        dirmngr \
-        apt-transport-https \
-        lsb-release \
-        gdal-bin \
- && rm -rf /var/lib/apt/lists/*
-
-# ----------------------------------------------------------------------------
-# Python packages
-# ----------------------------------------------------------------------------
-RUN ln -s /usr/bin/python3 /usr/bin/python \
- && python3 -m pip install --upgrade pip \
- && python3 -m pip install pip six numpy wheel mock keras keras_applications keras_preprocessing future setuptools
-
-# ----------------------------------------------------------------------------
-# Build TensorFlow
-# ----------------------------------------------------------------------------
-RUN export TF_ROOT=/work/tf \
- && mkdir -p ${TF_ROOT}/bazel \
- && cd ${TF_ROOT}/bazel \
- && wget https://github.com/bazelbuild/bazel/releases/download/0.29.1/bazel-0.29.1-installer-linux-x86_64.sh \
- && chmod +x bazel-0.29.1-installer-linux-x86_64.sh \
- && ./bazel-0.29.1-installer-linux-x86_64.sh
-
-RUN export TF_ROOT=/work/tf \
- && export PATH="$PATH:$HOME/bin" \
- && cd $TF_ROOT \
- && git clone https://github.com/tensorflow/tensorflow.git \
- && cd tensorflow \
- && git checkout r2.1 \
- && export PYTHON_BIN_PATH=$(which python) \
- && export PYTHON_LIB_PATH="$($PYTHON_BIN_PATH -c 'import site; print(site.getsitepackages()[0])')" \
- && export PYTHONPATH=/usr/lib/ \
- && export PYTHON_ARG=/usr/lib/ \
- && export TF_NEED_GCP=0 \
- && export TF_NEED_CUDA=0 \
- && export TF_NEED_HDFS=0 \
- && export TF_NEED_OPENCL=0 \
- && export TF_NEED_JEMALLOC=1 \
- && export TF_ENABLE_XLA=0 \
- && export TF_NEED_VERBS=0 \
- && export TF_NEED_MKL=0 \
- && export TF_DOWNLOAD_MKL=0 \
- && export TF_NEED_AWS=0 \
- && export TF_NEED_MPI=0 \
- && export TF_NEED_GDR=0 \
- && export TF_NEED_S3=0 \
- && export TF_NEED_OPENCL_SYCL=0 \
- && export TF_SET_ANDROID_WORKSPACE=0 \
- && export TF_NEED_COMPUTECPP=0 \
- && export GCC_HOST_COMPILER_PATH=$(which gcc) \
- && export CC_OPT_FLAGS="-march=native" \
- && export TF_NEED_KAFKA=0 \
- && export TF_NEED_TENSORRT=0 \
- && export TF_NCCL_VERSION=2.4 \
- && export GCC_HOST_COMPILER_PATH=$(which gcc) \
- && export CC_OPT_FLAGS="-march=native" \
- && ./configure \
- && bazel build //tensorflow:libtensorflow_framework.so //tensorflow:libtensorflow_cc.so //tensorflow/tools/pip_package:build_pip_package --noincompatible_do_not_split_linking_cmdline
-
-# ----------------------------------------------------------------------------
-# Build protobuf
-# ----------------------------------------------------------------------------
-RUN export TF_ROOT=/work/tf \
- && mkdir -p $TF_ROOT/installdir \
- && cd $TF_ROOT \
- && wget https://github.com/google/protobuf/releases/download/v3.8.0/protobuf-cpp-3.8.0.tar.gz \
- && tar -xvf protobuf-cpp-3.8.0.tar.gz \
- && cd protobuf-3.8.0 \
- && ./configure --prefix=/work/tf/installdir/ \
- && make install -j $(grep -c ^processor /proc/cpuinfo)
-
-# ----------------------------------------------------------------------------
-# Prepare TF dependencies
-# ----------------------------------------------------------------------------
-RUN export TF_ROOT=/work/tf \
- && cd $TF_ROOT/tensorflow \
- && bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg \
- && pip3 install $(find /tmp/tensorflow_pkg/ -type f -iname "tensorflow*.whl") \
- && ./tensorflow/lite/tools/make/download_dependencies.sh \
- && ./tensorflow/lite/tools/make/build_lib.sh \
- && mkdir -p /work/tf/installdir/lib \
- && mkdir -p /work/tf/installdir/include \
- && cp bazel-bin/tensorflow/libtensorflow_cc.so* /work/tf/installdir/lib \
- && cp bazel-bin/tensorflow/libtensorflow_framework.so* /work/tf/installdir/lib \
- && cp -r bazel-genfiles/* /work/tf/installdir/include \
- && cp -r tensorflow/cc /work/tf/installdir/include/tensorflow \
- && cp -r tensorflow/core /work/tf/installdir/include/tensorflow \
- && cp -r third_party /work/tf/installdir/include \
- && cp -r bazel-tensorflow/external/eigen_archive/unsupported /work/tf/installdir/include \
- && cp -r bazel-tensorflow/external/eigen_archive/Eigen /work/tf/installdir/include \
- && cp -r tensorflow/lite/tools/make/downloads/absl/absl /work/tf/installdir/include 
-
-# ----------------------------------------------------------------------------
-# Build OTB: Stage 1 (clone)
-# ----------------------------------------------------------------------------
-RUN mkdir -p /work/otb \
- && cd /work/otb \
- && git clone https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb.git otb \
- && cd otb \
- && git checkout release-7.1
-
-# ----------------------------------------------------------------------------
-# Build OTB: Stage 2 (superbuild)
-# ----------------------------------------------------------------------------
-RUN mkdir -p /work/otb/build \
- && cd /work/otb/build \
- && cmake /work/otb/otb/SuperBuild \
-        -DUSE_SYSTEM_BOOST=ON \
-        -DUSE_SYSTEM_CURL=ON \
-        -DUSE_SYSTEM_EXPAT=ON \
-        -DUSE_SYSTEM_FFTW=ON \
-        -DUSE_SYSTEM_FREETYPE=ON \
-        -DUSE_SYSTEM_GDAL=ON \
-        -DUSE_SYSTEM_GEOS=ON \
-        -DUSE_SYSTEM_GEOTIFF=ON \
-        -DUSE_SYSTEM_GLEW=ON \
-        -DUSE_SYSTEM_GLFW=ON \
-        -DUSE_SYSTEM_GLUT=ON \
-        -DUSE_SYSTEM_GSL=ON \
-        -DUSE_SYSTEM_ITK=ON \
-        -DUSE_SYSTEM_LIBKML=ON \
-        -DUSE_SYSTEM_LIBSVM=ON \
-        -DUSE_SYSTEM_MUPARSER=ON \
-        -DUSE_SYSTEM_MUPARSERX=ON \
-        -DUSE_SYSTEM_OPENCV=ON \
-        -DUSE_SYSTEM_OPENTHREADS=ON \
-        -DUSE_SYSTEM_OSSIM=ON \
-        -DUSE_SYSTEM_PNG=ON \
-        -DUSE_SYSTEM_QT5=ON \
-        -DUSE_SYSTEM_QWT=ON \
-        -DUSE_SYSTEM_TINYXML=ON \
-        -DUSE_SYSTEM_ZLIB=ON \
-        -DUSE_SYSTEM_SWIG=OFF \
-        -DOTB_WRAP_PYTHON=OFF \
- && make -j $(grep -c ^processor /proc/cpuinfo)
-
-# ----------------------------------------------------------------------------
-# Build OTB: Stage 3 (bindings)
-# ----------------------------------------------------------------------------
-RUN cd /work/otb/otb/Modules/Remote \
- && git clone -b release-2.0-rc2 https://github.com/remicres/otbtf.git \
- && cd /work/otb/build/OTB/build \
- && cmake /work/otb/otb \
-        -DOTB_WRAP_PYTHON=ON \
-        -DPYTHON_EXECUTABLE=/usr/bin/python3.6 \
-        -Dopencv_INCLUDE_DIR=/usr/include \
-        -DModule_OTBTensorflow=ON \
-        -DOTB_USE_TENSORFLOW=ON \
-        -DTENSORFLOW_CC_LIB=/work/tf/installdir/lib/libtensorflow_cc.so \
-        -DTENSORFLOW_FRAMEWORK_LIB=/work/tf/installdir/lib/libtensorflow_framework.so \
-        -Dtensorflow_include_dir=/work/tf/installdir/include/ \
- && cd /work/otb/build/ \
- && make -j $(grep -c ^processor /proc/cpuinfo)
-
-# ----------------------------------------------------------------------------
-# Add important environment variables
-# ----------------------------------------------------------------------------
-ENV PATH="$PATH:/work/otb/superbuild_install/bin/"
-ENV PYTHONPATH="/work/otb/superbuild_install/lib/otb/python:/work/otb/otb/Modules/Remote/otbtf/python:$PYTHONPATH"
-ENV OTB_APPLICATION_PATH="/work/otb/superbuild_install/lib/otb/applications"
-ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/work/otb/superbuild_install/lib/:/work/tf/installdir/lib/"
-
-# ----------------------------------------------------------------------------
-# Clean
-# ----------------------------------------------------------------------------
-RUN rm -rf /tmp/* /root/.cache && apt-get clean
-
-# ----------------------------------------------------------------------------
-# Add one user
-# ----------------------------------------------------------------------------
-RUN useradd -s /bin/bash -m otbuser
-USER otbuser
-WORKDIR /home/otbuser
-
-# ----------------------------------------------------------------------------
-# Exemple :
-# docker build --tag otbtf_image
-# docker run -v /path/to/host/:/path/to/mount/ otbtf_image otbcli_ExtractROI
-# docker run -ti -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY otbtf_image otbgui_ExtractROI
-# ----------------------------------------------------------------------------
-
diff --git a/tools/dockerfiles/r2.0/bionic.tf-r2.1.otb-7.1-GPU/Dockerfile b/tools/dockerfiles/r2.0/bionic.tf-r2.1.otb-7.1-GPU/Dockerfile
deleted file mode 100644
index dc6b63c9e962925482608eef62b5ea773daa6864..0000000000000000000000000000000000000000
--- a/tools/dockerfiles/r2.0/bionic.tf-r2.1.otb-7.1-GPU/Dockerfile
+++ /dev/null
@@ -1,261 +0,0 @@
-FROM nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04
-
-MAINTAINER Remi Cresson <remi.cresson[at]irstea[dot]fr>
-
-RUN apt-get update -y \
- && apt-get upgrade -y \
- && apt-get install -y --no-install-recommends \
-        sudo \
-        ca-certificates \
-        curl \
-        make \
-        cmake \
-        g++ \
-        gcc \
-        git \
-        libtool \
-        swig \
-        xvfb \
-        wget \
-        autoconf \
-        automake \
-        pkg-config \
-        zip \
-        zlib1g-dev \
-        unzip \
- && rm -rf /var/lib/apt/lists/*
-
-# ----------------------------------------------------------------------------
-# OTB and TensorFlow dependencies
-# ----------------------------------------------------------------------------
-RUN apt-get update -y \
- && apt-get upgrade -y \
- && apt-get install -y --no-install-recommends \
-        freeglut3-dev \
-        libboost-date-time-dev \
-        libboost-filesystem-dev \
-        libboost-graph-dev \
-        libboost-program-options-dev \
-        libboost-system-dev \
-        libboost-thread-dev \
-        libcurl4-gnutls-dev \
-        libexpat1-dev \
-        libfftw3-dev \
-        libgdal-dev \
-        libgeotiff-dev \
-        libglew-dev \
-        libglfw3-dev \
-        libgsl-dev \
-        libinsighttoolkit4-dev \
-        libkml-dev \
-        libmuparser-dev \
-        libmuparserx-dev \
-        libopencv-core-dev \
-        libopencv-ml-dev \
-        libopenthreads-dev \
-        libossim-dev \
-        libpng-dev \
-        libqt5opengl5-dev \
-        libqwt-qt5-dev \
-        libsvm-dev \
-        libtinyxml-dev \
-        qtbase5-dev \
-        qttools5-dev \
-        default-jdk \
-        python3-pip \
-        python3.6-dev \
-        python3.6-gdal \
-        python3-setuptools \
-        libxmu-dev \
-        libxi-dev \
-        qttools5-dev-tools \
-        bison \
-        software-properties-common \
-        dirmngr \
-        apt-transport-https \
-        lsb-release \
-        gdal-bin \
- && rm -rf /var/lib/apt/lists/*
-
-# ----------------------------------------------------------------------------
-# Python packages
-# ----------------------------------------------------------------------------
-RUN ln -s /usr/bin/python3 /usr/bin/python \
- && python3 -m pip install --upgrade pip \
- && python3 -m pip install pip six numpy wheel mock keras keras_applications keras_preprocessing future setuptools
-
-# ----------------------------------------------------------------------------
-# Build TensorFlow
-# ----------------------------------------------------------------------------
-RUN export TF_ROOT=/work/tf \
- && mkdir -p ${TF_ROOT}/bazel \
- && cd ${TF_ROOT}/bazel \
- && wget https://github.com/bazelbuild/bazel/releases/download/0.29.1/bazel-0.29.1-installer-linux-x86_64.sh \
- && chmod +x bazel-0.29.1-installer-linux-x86_64.sh \
- && ./bazel-0.29.1-installer-linux-x86_64.sh
-
-RUN export TF_ROOT=/work/tf \
- && export PATH="$PATH:$HOME/bin" \
- && cd $TF_ROOT \
- && git clone https://github.com/tensorflow/tensorflow.git \
- && cd tensorflow \
- && git checkout r2.1 \
- && export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64/:/usr/local/cuda/lib64/stubs/" \
- && export PYTHON_BIN_PATH=$(which python) \
- && export PYTHON_LIB_PATH="$($PYTHON_BIN_PATH -c 'import site; print(site.getsitepackages()[0])')" \
- && export PYTHONPATH=/usr/lib/ \
- && export PYTHON_ARG=/usr/lib/ \
- && export CUDA_TOOLKIT_PATH=/usr/local/cuda-10.1/ \
- && export CUDNN_INSTALL_PATH=/usr/ \
- && export TF_NEED_GCP=0 \
- && export TF_NEED_CUDA=1 \
- && export TF_CUDA_VERSION="$($CUDA_TOOLKIT_PATH/bin/nvcc --version | sed -n 's/^.*release \(.*\),.*/\1/p')" \
- && export TF_CUDA_COMPUTE_CAPABILITIES=7.5,6.1,5.2 \
- && export TF_NEED_HDFS=0 \
- && export TF_NEED_OPENCL=0 \
- && export TF_NEED_JEMALLOC=1 \
- && export TF_ENABLE_XLA=1 \
- && export TF_NEED_VERBS=0 \
- && export TF_CUDA_CLANG=0 \
- && export TF_CUDNN_VERSION="$(sed -n 's/^#define CUDNN_MAJOR\s*\(.*\).*/\1/p' $CUDNN_INSTALL_PATH/include/cudnn.h)" \
- && export TF_NEED_MKL=0 \
- && export TF_DOWNLOAD_MKL=0 \
- && export TF_NEED_AWS=0 \
- && export TF_NEED_MPI=0 \
- && export TF_NEED_GDR=0 \
- && export TF_NEED_S3=0 \
- && export TF_NEED_OPENCL_SYCL=0 \
- && export TF_SET_ANDROID_WORKSPACE=0 \
- && export TF_NEED_COMPUTECPP=0 \
- && export GCC_HOST_COMPILER_PATH=$(which gcc) \
- && export CC_OPT_FLAGS="-march=native" \
- && export TF_NEED_KAFKA=0 \
- && export TF_NEED_TENSORRT=0 \
- && export TF_NCCL_VERSION=2.4 \
- && export GCC_HOST_COMPILER_PATH=$(which gcc) \
- && export CC_OPT_FLAGS="-march=native" \
- && ./configure \
- && bazel build //tensorflow:libtensorflow_framework.so //tensorflow:libtensorflow_cc.so //tensorflow/tools/pip_package:build_pip_package --noincompatible_do_not_split_linking_cmdline
-
-# ----------------------------------------------------------------------------
-# Build protobuf
-# ----------------------------------------------------------------------------
-RUN export TF_ROOT=/work/tf \
- && mkdir -p $TF_ROOT/installdir \
- && cd $TF_ROOT \
- && wget https://github.com/google/protobuf/releases/download/v3.8.0/protobuf-cpp-3.8.0.tar.gz \
- && tar -xvf protobuf-cpp-3.8.0.tar.gz \
- && cd protobuf-3.8.0 \
- && ./configure --prefix=/work/tf/installdir/ \
- && make install -j $(grep -c ^processor /proc/cpuinfo)
-
-# ----------------------------------------------------------------------------
-# Prepare TF dependencies
-# ----------------------------------------------------------------------------
-RUN export TF_ROOT=/work/tf \
- && cd $TF_ROOT/tensorflow \
- && bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg \
- && pip3 install $(find /tmp/tensorflow_pkg/ -type f -iname "tensorflow*.whl") \
- && ./tensorflow/lite/tools/make/download_dependencies.sh \
- && ./tensorflow/lite/tools/make/build_lib.sh \
- && mkdir -p /work/tf/installdir/lib \
- && mkdir -p /work/tf/installdir/include \
- && cp bazel-bin/tensorflow/libtensorflow_cc.so* /work/tf/installdir/lib \
- && cp bazel-bin/tensorflow/libtensorflow_framework.so* /work/tf/installdir/lib \
- && cp -r bazel-genfiles/* /work/tf/installdir/include \
- && cp -r tensorflow/cc /work/tf/installdir/include/tensorflow \
- && cp -r tensorflow/core /work/tf/installdir/include/tensorflow \
- && cp -r third_party /work/tf/installdir/include \
- && cp -r bazel-tensorflow/external/eigen_archive/unsupported /work/tf/installdir/include \
- && cp -r bazel-tensorflow/external/eigen_archive/Eigen /work/tf/installdir/include \
- && cp -r tensorflow/lite/tools/make/downloads/absl/absl /work/tf/installdir/include 
-
-# ----------------------------------------------------------------------------
-# Build OTB: Stage 1 (clone)
-# ----------------------------------------------------------------------------
-RUN mkdir -p /work/otb \
- && cd /work/otb \
- && git clone https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb.git otb \
- && cd otb \
- && git checkout release-7.1
-
-# ----------------------------------------------------------------------------
-# Build OTB: Stage 2 (superbuild)
-# ----------------------------------------------------------------------------
-RUN mkdir -p /work/otb/build \
- && cd /work/otb/build \
- && cmake /work/otb/otb/SuperBuild \
-        -DUSE_SYSTEM_BOOST=ON \
-        -DUSE_SYSTEM_CURL=ON \
-        -DUSE_SYSTEM_EXPAT=ON \
-        -DUSE_SYSTEM_FFTW=ON \
-        -DUSE_SYSTEM_FREETYPE=ON \
-        -DUSE_SYSTEM_GDAL=ON \
-        -DUSE_SYSTEM_GEOS=ON \
-        -DUSE_SYSTEM_GEOTIFF=ON \
-        -DUSE_SYSTEM_GLEW=ON \
-        -DUSE_SYSTEM_GLFW=ON \
-        -DUSE_SYSTEM_GLUT=ON \
-        -DUSE_SYSTEM_GSL=ON \
-        -DUSE_SYSTEM_ITK=ON \
-        -DUSE_SYSTEM_LIBKML=ON \
-        -DUSE_SYSTEM_LIBSVM=ON \
-        -DUSE_SYSTEM_MUPARSER=ON \
-        -DUSE_SYSTEM_MUPARSERX=ON \
-        -DUSE_SYSTEM_OPENCV=ON \
-        -DUSE_SYSTEM_OPENTHREADS=ON \
-        -DUSE_SYSTEM_OSSIM=ON \
-        -DUSE_SYSTEM_PNG=ON \
-        -DUSE_SYSTEM_QT5=ON \
-        -DUSE_SYSTEM_QWT=ON \
-        -DUSE_SYSTEM_TINYXML=ON \
-        -DUSE_SYSTEM_ZLIB=ON \
-        -DUSE_SYSTEM_SWIG=OFF \
-        -DOTB_WRAP_PYTHON=OFF \
- && make -j $(grep -c ^processor /proc/cpuinfo)
-
-# ----------------------------------------------------------------------------
-# Build OTB: Stage 3 (bindings)
-# ----------------------------------------------------------------------------
-RUN cd /work/otb/otb/Modules/Remote \
- && git clone -b release-2.0-rc2 https://github.com/remicres/otbtf.git \
- && cd /work/otb/build/OTB/build \
- && cmake /work/otb/otb \
-        -DOTB_WRAP_PYTHON=ON \
-        -DPYTHON_EXECUTABLE=/usr/bin/python3.6 \
-        -Dopencv_INCLUDE_DIR=/usr/include \
-        -DModule_OTBTensorflow=ON \
-        -DOTB_USE_TENSORFLOW=ON \
-        -DTENSORFLOW_CC_LIB=/work/tf/installdir/lib/libtensorflow_cc.so \
-        -DTENSORFLOW_FRAMEWORK_LIB=/work/tf/installdir/lib/libtensorflow_framework.so \
-        -Dtensorflow_include_dir=/work/tf/installdir/include/ \
- && cd /work/otb/build/ \
- && make -j $(grep -c ^processor /proc/cpuinfo)
-
-# ----------------------------------------------------------------------------
-# Add important environment variables
-# ----------------------------------------------------------------------------
-ENV PATH="$PATH:/work/otb/superbuild_install/bin/"
-ENV PYTHONPATH="/work/otb/superbuild_install/lib/otb/python:/work/otb/otb/Modules/Remote/otbtf/python:$PYTHONPATH"
-ENV OTB_APPLICATION_PATH="/work/otb/superbuild_install/lib/otb/applications"
-ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/work/otb/superbuild_install/lib/:/work/tf/installdir/lib/"
-
-# ----------------------------------------------------------------------------
-# Clean
-# ----------------------------------------------------------------------------
-RUN rm -rf /tmp/* /root/.cache && apt-get clean
-
-# ----------------------------------------------------------------------------
-# Add one user
-# ----------------------------------------------------------------------------
-RUN useradd -s /bin/bash -m otbuser
-USER otbuser
-WORKDIR /home/otbuser
-
-# ----------------------------------------------------------------------------
-# Exemple :
-# docker build --tag otbtf_image
-# docker run -v /path/to/host/:/path/to/mount/ otbtf_image otbcli_ExtractROI
-# docker run -ti -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY otbtf_image otbgui_ExtractROI
-# ----------------------------------------------------------------------------
-