Self-contained Python lab with JupyterLab + VS Code IDE in a single Docker container.
83
A self-contained, Docker-powered Python development environment combining JupyterLab and a VS Code-compatible browser IDE in a single container.
LabX is a batteries-included Python lab environment that runs entirely inside Docker. With a single command you get:
| Tool | URL | Purpose |
|---|---|---|
| JupyterLab | http://localhost:5959 | Interactive notebooks & data exploration |
| LabX-Server (code-server) | http://localhost:5960 | Full VS Code IDE in the browser |
Both services share the same Python environment and /workspace directory, so code you write in one is immediately available in the other.
.vsix files, including Python, Jupyter, Prettier, Rainbow CSV, Database Client, Code Runner, and several themeslinux/amd64 and linux/arm64/workspace and your files persist across container restartsdocker run -d \
--name labx \
-p 5959:5959 \
-p 5960:5960 \
-v "$(pwd)/workspace:/workspace" \
-e LABX_PASSWORD=mysecretpassword \
labx:latest
git clone https://github.com/<your-org>/labx.git
cd labx
docker build -t labx:latest .
Then run the container:
docker run -d \
--name labx \
-p 5959:5959 \
-p 5960:5960 \
-v "$(pwd)/workspace:/workspace" \
-e LABX_PASSWORD=mysecretpassword \
labx:latest
| Service | URL |
|---|---|
| JupyterLab | http://localhost:5959โ |
| LabX-Server | http://localhost:5960โ |
Login with the password you set via LABX_PASSWORD (default: labx@123).
| Environment Variable | Default | Description |
|---|---|---|
LABX_PASSWORD | labx@123 | Shared password for both JupyterLab and LabX-Server |
Tip: Always set a strong custom password in production. Pass it with
-e LABX_PASSWORD=<your-password>when running the container.
Create a docker-compose.yml in your project directory:
services:
labx:
image: labx:latest
container_name: labx
ports:
- "5959:5959" # JupyterLab
- "5960:5960" # LabX-Server
volumes:
- ./workspace:/workspace
environment:
- LABX_PASSWORD=mysecretpassword
restart: unless-stopped
Then start with:
docker compose up -d
| Category | Packages |
|---|---|
| Core Science | NumPy, SciPy, SymPy, Pandas |
| Visualisation | Matplotlib, Seaborn, Plotly |
| Machine Learning | Scikit-learn, MLflow, W&B (Weights & Biases) |
| Deep Learning | Keras, Transformers, Tokenizers, SentencePiece, Accelerate, Evaluate, Datasets |
| Reinforcement Learning | Gymnasium, Stable-Baselines3 |
| Computer Vision | OpenCV, Pillow, scikit-image, imageio |
| NLP | NLTK, spaCy, Gensim |
| Utilities | tqdm, joblib, requests, PyYAML, openpyxl, h5py, ipywidgets |
| Extension | Purpose |
|---|---|
ms-python.python | Python language support |
ms-toolsai.jupyter-hub | JupyterHub integration |
ms-toolsai.jupyter-renderers | Rich notebook output renderers |
formulahendry.code-runner | Run code snippets in terminal |
esbenp.prettier-vscode | Code formatter |
mechatroner.rainbow-csv | Colourised CSV editing |
cweijan.vscode-database-client2 | Universal database GUI |
buvan.sql-crack | SQL query runner |
ChristofKaufmann.dataframe-viewer | DataFrame visual explorer |
julien-.terminal-file-actions | File actions from terminal |
yandeu.five-server | Live HTML/Markdown preview |
tuld01061.md-live-server | Markdown live server |
the-long-ride.markdown-them | Markdown theme |
Rafael-Avalos.dark-colors-theme | Dark colour theme |
darkmusic.carbon-rewind-theme | Carbon rewind theme |
mszylkowski.materialsymbols | Material symbols icon font |
ryohidaka.github-actions-branding-preview | GitHub Actions branding preview |
labx/
โโโ Dockerfile # Main multi-stage Docker build
โโโ start.sh # Container entrypoint โ starts JupyterLab & LabX-Server
โโโ requirements.txt # Top-level Python package list (unpinned)
โโโ requirements-linux.txt # Fully pinned package list for Linux/Docker
โโโ branding/
โ โโโ logo.png # LabX logo (applied to code-server UI)
โโโ jupyter/
โ โโโ overrides.json # JupyterLab default theme settings
โโโ vscode/
โโโ settings.json # Default VS Code / code-server user settings
โโโ vsix/ # Pre-bundled VS Code extensions (.vsix)
| Port | Service | Notes |
|---|---|---|
5959 | JupyterLab | Mapped to the same host port |
5960 | LabX-Server | Mapped to the same host port |
Use Docker Buildx to build for both amd64 and arm64:
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t labx:latest \
--push .
Contributions are welcome! Here are a few ways to help:
git checkout -b feature/my-feature)git commit -m "feat: add my feature")git push origin feature/my-feature)Please keep commits focused and descriptive.
This project is licensed under the MIT License โ see the LICENSEโ file for details.
Content type
Image
Digest
sha256:116059236โฆ
Size
3.9 GB
Last updated
about 2 months ago
docker pull sahajs59/labx:v1.0