Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,34 @@
# eopf-container-images
Container Images used in the EOPF Sentinel Zarr Samples

## Available Images

### eopf-jupyterhub-dask
Docker image based on the official EOPF CPM image, compatible with JupyterHub and configured for Dask cluster operations. Designed for SAFE to Zarr conversion workflows.

**Location**: `eopf-jupyterhub-dask/`

**Base Image**: `registry.eopf.copernicus.eu/cpm/eopf-cpm:2-6-3`

**Key Features**:
- JupyterHub single-user server support
- JupyterLab with extensions (Git, MyST)
- Dask and Dask Gateway for distributed computing
- Ready for SAFE to Zarr conversion

See [eopf-jupyterhub-dask/README.md](eopf-jupyterhub-dask/README.md) for details.

### eopf-jupyterlab
Custom JupyterLab environment with EOPF dependencies.

**Location**: `eopf-jupyterlab/`

### eopf-dask
Dask cluster configuration for EOPF.

**Location**: `eopf-dask/`

### eopf-zarr-driver
Zarr driver utilities and demonstrations.

**Location**: `eopf-zarr-driver/`
41 changes: 41 additions & 0 deletions eopf-jupyterhub-dask/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Git
.git
.gitignore
.gitattributes

# Documentation
README.md
*.md

# Python
__pycache__
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg

# IDE
.vscode/
.idea/
*.swp
*.swo
*~

# OS
.DS_Store
Thumbs.db
43 changes: 43 additions & 0 deletions eopf-jupyterhub-dask/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Docker Image for EOPF compatible with JupyterHub and Dask Cluster
# This image performs SAFE to Zarr conversion using the Dask Cluster
# Base image: Official EOPF image from EOPF CPM

FROM registry.eopf.copernicus.eu/cpm/eopf-cpm:2-6-3

LABEL maintainer="EOPF Sample Service"
LABEL description="EOPF Docker image compatible with JupyterHub and Dask Cluster for SAFE to Zarr conversion"

# Fix: https://github.com/hadolint/hadolint/wiki/DL4006
# Fix: https://github.com/koalaman/shellcheck/wiki/SC3014
SHELL ["/bin/bash", "-o", "pipefail", "-c"]

USER root

# Install system dependencies if needed
RUN apt-get update && \
apt-get install -y --no-install-recommends \
git \
curl \
&& apt-get clean -y \
&& rm -rf /var/lib/apt/lists/*

# Install required Python packages using pip
# These packages are required for JupyterHub compatibility and Dask operations
# Note: dask, dask-gateway, and distributed are already in the base image installed for dask user
# Install system-wide so they're available for all users
RUN pip install --no-cache-dir \
jupyterhub \
jupyterlab \
jupyterlab-myst \
jupyterlab-git \
nbgitpuller \
dask-labextension

# Add dask user's local packages to Python path so EOPF packages are accessible
ENV PYTHONPATH="/home/dask/.local/lib/python3.11/site-packages:${PYTHONPATH}"

# Expose JupyterLab port
EXPOSE 8888

# Default command (will be overridden by JupyterHub)
CMD ["jupyterhub-singleuser"]
77 changes: 77 additions & 0 deletions eopf-jupyterhub-dask/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# EOPF JupyterHub Dask Image

## Overview

This Docker image is designed for performing SAFE to Zarr conversion using the Dask Cluster. It is based on the official EOPF image and is compatible with JupyterHub deployments.

## Base Image

- **Base**: `registry.eopf.copernicus.eu/cpm/eopf-cpm:2-6-3`
- Official EOPF image from the EOPF CPM registry

## Features

- **JupyterHub Compatible**: Includes `jupyterhub-singleuser` for seamless integration with JupyterHub
- **JupyterLab**: Full JupyterLab environment with extensions
- **Dask Support**: Configured with Dask and Dask Gateway for distributed computing
- **Git Integration**: Includes JupyterLab Git extension and nbgitpuller
- **MyST Support**: Markdown and MyST support via jupyterlab-myst

## Included Packages

- `jupyterhub-singleuser` - JupyterHub single-user notebook server
- `jupyterlab` - JupyterLab interface
- `jupyterlab-myst` - MyST Markdown support
- `jupyterlab-git` - Git extension for JupyterLab
- `nbgitpuller` - Pull notebooks from Git repositories
- `dask` - Parallel computing library
- `dask-gateway` - Gateway for Dask clusters
- `distributed` - Distributed computing with Dask

## Docker Hub

The image is available on Docker Hub:

```bash
docker pull yuvraj1989/eopf-jupyterhub-dask:latest
# or specific version
docker pull yuvraj1989/eopf-jupyterhub-dask:1.0.0
```

**Docker Hub Repository**: https://hub.docker.com/r/yuvraj1989/eopf-jupyterhub-dask

## Building the Image

```bash
docker build -t eopf-jupyterhub-dask:latest -f eopf-jupyterhub-dask/Dockerfile .
```

## Running the Image

### Standalone Mode

```bash
docker run -p 8888:8888 yuvraj1989/eopf-jupyterhub-dask:latest
```

### With JupyterHub

This image is designed to be used with JupyterHub. Configure your JupyterHub to use this image:

```python
c.DockerSpawner.image = 'yuvraj1989/eopf-jupyterhub-dask:latest'
```

## Related Issues and PRs

- Issue: [#43 - Create Docker image with eopf compatible with JupyterHub and Dask Cluster](https://github.com/EOPF-Sample-Service/eopf-container-images/issues/43)
- Related Issue: https://github.com/EOPF-Sample-Service/eopf-sample-notebooks/issues/185
- Related PR: https://github.com/EOPF-Sample-Service/eopf-sample-notebooks/pull/186

Comment on lines +65 to +70
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would remove this part, not relevant for the README

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@clausmichele okay sure, thanks.

## Usage for SAFE to Zarr Conversion

This image includes all necessary dependencies for performing SAFE to Zarr conversion with Dask. Users can run the conversion notebooks in a JupyterHub environment with Dask cluster support.

## Maintenance

Maintained by: EOPF Sample Service Team