1
+ # ------------------------------
2
+ # Base image from Jupyter stack
3
+ # ------------------------------
1
4
FROM quay.io/jupyter/base-notebook:latest
2
5
3
- # -------------------------------------------------------
4
- # 1. Install system-level packages (minimal, just git)
5
- # -------------------------------------------------------
6
+ # ------------------------------
7
+ # 1. Switch to root to install system packages
8
+ # ------------------------------
6
9
USER root
10
+
7
11
RUN apt-get update && \
8
- apt-get install -y git && \
9
- rm -rf /var/lib/apt/lists/*
12
+ apt-get install -y --no-install-recommends \
13
+ git \
14
+ curl \
15
+ nodejs \
16
+ npm \
17
+ && apt-get clean && rm -rf /var/lib/apt/lists/*
10
18
11
- # -------------------------------------------------------
12
- # 2. Install geospatial Python packages via conda ( base env)
13
- # -------------------------------------------------------
14
- RUN mamba install -n base -c conda-forge \
19
+ # ------------------------------
20
+ # 2. Install conda packages into base env
21
+ # ------------------------------
22
+ RUN mamba install -n base -c conda-forge -y \
15
23
gdal \
16
24
proj \
17
25
geos \
18
26
rasterio \
19
27
pyproj \
20
28
fiona \
21
- localtileserver \
22
29
geopandas \
23
30
rioxarray \
24
31
maplibre \
25
32
pmtiles \
26
- leafmap \
27
33
flask \
28
34
flask-cors \
29
- tippecanoe \
35
+ localtileserver \
36
+ jupyter-server-proxy \
30
37
ffmpeg-python \
31
38
gdown \
32
39
xee \
33
- jupyter-server-proxy -y && \
34
- fix-permissions "${CONDA_DIR}"
40
+ leafmap \
41
+ && mamba clean --all --yes \
42
+ && fix-permissions $CONDA_DIR
35
43
36
- # -------------------------------------------------------
37
- # 3. Environment variables
38
- # -------------------------------------------------------
39
- ENV PROJ_LIB=/opt/conda/ share/proj
40
- ENV GDAL_DATA=/opt/conda/ share/gdal
41
- ENV LOCALTILESERVER_CLIENT_PREFIX='proxy/{port}'
44
+ # ------------------------------
45
+ # 3. Set geospatial environment variables
46
+ # ------------------------------
47
+ ENV PROJ_LIB=$CONDA_DIR/ share/proj \
48
+ GDAL_DATA=$CONDA_DIR/ share/gdal \
49
+ LOCALTILESERVER_CLIENT_PREFIX='proxy/{port}'
42
50
43
- # -------------------------------------------------------
44
- # 4. Copy source code (do this * after* package installs to improve caching)
45
- # -------------------------------------------------------
51
+ # ------------------------------
52
+ # 4. Copy source code after env setup
53
+ # ------------------------------
46
54
COPY . /home/jovyan/geemap
47
55
WORKDIR /home/jovyan/geemap
48
56
49
-
50
- # -------------------------------------------------------
51
- # 5. Build and install geemap from source
52
- # -------------------------------------------------------
53
- # Prevent setuptools_scm issues if .git is missing
57
+ # ------------------------------
58
+ # 5. Install geemap from source
59
+ # ------------------------------
60
+ # Prevent version resolution errors in CI
54
61
ENV SETUPTOOLS_SCM_PRETEND_VERSION_FOR_GEEMAP=0.0.0
55
62
56
- RUN rm -rf /home/jovyan/geemap/geemap.egg-info && \
57
- pip install -U geemap && \
63
+ RUN pip install . && \
64
+ rm -rf ./build ./dist *.egg-info && \
58
65
mkdir -p /home/jovyan/work && \
59
66
fix-permissions /home/jovyan
60
67
61
- # -------------------------------------------------------
62
- # 6. Set back to default user
63
- # -------------------------------------------------------
68
+ # ------------------------------
69
+ # 6. Switch back to default user
70
+ # ------------------------------
71
+ USER $NB_UID
64
72
WORKDIR /home/jovyan
65
- USER jovyan
66
-
67
73
68
- # -------------------------------------------------------
69
- # 7. Run the docker container
70
- # -------------------------------------------------------
71
- # docker run -it -p 8888:8888 -v $(pwd):/home/jovyan/work giswqs/geemap:latest
74
+ # ------------------------------
75
+ # Usage:
76
+ # docker pull ghcr.io/gee-community/geemap:latest
77
+ # docker run -it -p 8888:8888 -v $(pwd):/home/jovyan/work ghcr.io/gee-community/geemap:latest
78
+ # ------------------------------
0 commit comments