Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
giswqs
GitHub Repository: giswqs/geemap
Path: blob/master/Dockerfile
2313 views
# ------------------------------
# Base image from Jupyter stack
# ------------------------------
FROM quay.io/jupyter/base-notebook:latest

# ------------------------------
# 1. Switch to root to install system packages
# ------------------------------
USER root

RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        git \
        curl \
        nodejs \
        npm \
    && apt-get clean && rm -rf /var/lib/apt/lists/*

# ------------------------------
# 2. Install conda packages into base env
# ------------------------------
RUN mamba install -n base -c conda-forge -y \
    gdal \
    proj \
    geos \
    rasterio \
    pyproj \
    fiona \
    geopandas \
    rioxarray \
    maplibre \
    pmtiles \
    flask \
    flask-cors \
    localtileserver \
    jupyter-server-proxy \
    ffmpeg-python \
    gdown \
    xee \
    leafmap \
    && mamba clean --all --yes \
    && fix-permissions $CONDA_DIR

# ------------------------------
# 3. Set geospatial environment variables
# ------------------------------
ENV PROJ_LIB=$CONDA_DIR/share/proj \
    GDAL_DATA=$CONDA_DIR/share/gdal \
    LOCALTILESERVER_CLIENT_PREFIX='proxy/{port}'

# ------------------------------
# 4. Copy source code after env setup
# ------------------------------
COPY . /home/jovyan/geemap
WORKDIR /home/jovyan/geemap

# ------------------------------
# 5. Install geemap from source
# ------------------------------
# Prevent version resolution errors in CI
ENV SETUPTOOLS_SCM_PRETEND_VERSION_FOR_GEEMAP=0.0.0

RUN pip install . && \
    rm -rf ./build ./dist *.egg-info && \
    mkdir -p /home/jovyan/work && \
    fix-permissions /home/jovyan

# ------------------------------
# 6. Switch back to default user
# ------------------------------
USER $NB_UID
WORKDIR /home/jovyan

# ------------------------------
# Usage:
# docker pull ghcr.io/gee-community/geemap:latest
# docker run -it -p 8888:8888 -v $(pwd):/home/jovyan/work ghcr.io/gee-community/geemap:latest
# ------------------------------