Repository: stefanproell/jupyter-notebook-docker-compose
Branch: master
Commit: e76c5baf72f8
Files: 4
Total size: 6.4 KB
Directory structure:
gitextract_0pky7meu/
├── README.md
├── docker-compose.yml
├── generate_token.py
└── jupyter.pem
================================================
FILE CONTENTS
================================================
================================================
FILE: README.md
================================================
# Jupyter with Docker Compose
This repository contains a simple docker-compose definition for launching the popular Jupyter Data Science Notebook.
You can define a password with the script ```generate_token.py -p S-E-C-R-E-T``` and generate SSL certificates as described below.
## Control the container:
* ```docker-compose up``` mounts the directory and starts the container
* ```docker-compose down``` destroys the container
## The compose file: docker-compose.yml
```bash
version: '3'
services:
datascience-notebook:
image: jupyter/datascience-notebook
volumes:
- ${LOCAL_WORKING_DIR}:/home/jovyan/work
- ${LOCAL_DATASETS}:/home/jovyan/work/datasets
- ${LOCAL_MODULES}:/home/jovyan/work/modules
- ${LOCAL_SSL_CERTS}:/etc/ssl/notebook
ports:
- ${PORT}:8888
container_name: jupyter_notebook
command: "start-notebook.sh \
--NotebookApp.password=${ACCESS_TOKEN} \
--NotebookApp.certfile=/etc/ssl/notebook/jupyter.pem"
```
## Example with a custom user
```YAML
version: '2'
services:
datascience-notebook:
image: jupyter/base-notebook:latest
volumes:
- /tmp/jupyter_test_dir:/home/docker_worker/work
ports:
- 8891:8888
command: "start-notebook.sh"
user: root
environment:
NB_USER: docker_worker
NB_UID: 1008
NB_GID: 1011
CHOWN_HOME: 'yes'
CHOWN_HOME_OPTS: -R
```
## The environment file .env
```bash
# Define a local data directory
# Set permissions for the container:
# sudo chown -R 1000 ${LOCAL_WORKING_DIR}
LOCAL_WORKING_DIR=/data/jupyter/notebooks
# Generate an access token like this
# import IPython as IPython
# hash = IPython.lib.passwd("S-E-C-R-E-T")
# print(hash)
# You can use the script generate_token.py
ACCESS_TOKEN=sha1:d4c78fe19cb5:0c8f830971d52da9d74b9985a8b87a2b80fc6e6a
# Host port
PORT=8888
# Provide data sets
LOCAL_DATASETS=/data/jupyter/datasets
# Provide local modules
LOCAL_MODULES=/home/git/python_modules
# SSL
# Generate cert like this:
# openssl req -x509 -nodes -newkey rsa:2048 -keyout jupyter.pem -out jupyter.pem
# Copy the jupyter.pem file into the location below.
LOCAL_SSL_CERTS=/opt/ssl-certs/jupyter
```
# Version Conflicts
Make sure to have the latest versions installed. You can use the Notebook Browser interface.
```python
pip install -U jupyter
```
================================================
FILE: docker-compose.yml
================================================
version: '3'
services:
datascience-notebook:
image: jupyter/datascience-notebook
volumes:
- ${LOCAL_WORKING_DIR}:/home/jovyan/work
- ${LOCAL_DATASETS}:/home/jovyan/work/datasets
- ${LOCAL_MODULES}:/home/jovyan/work/modules
- ${LOCAL_SSL_CERTS}:/etc/ssl/notebook
ports:
- ${PORT}:8888
container_name: jupyter_notebook
command: "start-notebook.sh \
--NotebookApp.password=${ACCESS_TOKEN} \
--NotebookApp.certfile=/etc/ssl/notebook/jupyter.pem"
================================================
FILE: generate_token.py
================================================
#!/usr/bin/env sh
import IPython as IPython
if __name__ == "__main__":
print("Generate a access token")
from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument("-p",
"--password",
dest="password",
help="The password you want to use for authentication.",
required=True)
args = parser.parse_args()
print("\nCopy this line into the .env file:\n")
hash = IPython.lib.passwd(args.password)
print("ACCESS_TOKEN=" + hash)
================================================
FILE: jupyter.pem
================================================
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDtGlWjn9Sw2aV0
32H7le8Ra2cQRx5cS/m5R8HL0Tl/JlYwLBXNZcsUmnqOKCxJFilkBcj4BIAic5ZR
b1AyTPn1RERf6SbFLZGBUnYcLQDL6Z6qEILe0H5G30yFjdvjUVnhYPUsWW6H1tUF
EhtuMduj2o+2YUaiE6UQAD5EfX09jzGcwNx/Hj1XXvpRSfDBQWlWxkKOm6TqGoXH
FBAIGAH1gKehotGDd+YluOFp9qk8G2e2Tvpg7JQfaSoIT1ViHwg+0XSQVoVRNqWK
XQ+MD+dCcwbcL7kAbnLW1x1a4ym9as5t/iDUjVldh70coJ9uaa1CHklAZzheH6Xc
up6cvqb5AgMBAAECggEBANa/iV1fwCZFmsRWJsrVq+hdHMXzhB4YeiBES9SstaTi
NiH/a+fTELKij+n9nM69kdOUIcfxW5TYmAc+CKbmbWal5D/yTjk84pL8+xjd8eC+
wgRKXB4vPJA4Y3h7WfNzlTK6vJTkk2XZQKsNEWcnJUYtCQko5e6aWGA7uCoUdsCv
GPVIgxFpSuAzAVJQVDhcAIVYYeXR8+XF5VDGme0IdN1oOOaNDYvzboBZhWwjIM5c
K309EeY2599Q6HrFK7/eaRLGSoFjQu5WJnQ+CCHp3Awx+5Btc7sYhZHEwi1Qrv+v
RKFLpcICs70pD9/5/QK8PQ57hjfIJdVCr6YkU80EQuECgYEA+BIGzoqTvtrxoTfp
opGZ933fE8f678BEm6WxfhfptZa28M4IJa2wVTfOMp2d8yf03hEhQ5/wc6T2kXmz
PDUq90m2P9dpwUIpQcOH3KGMqtvQ1FS2VikxSm+1u0IzDEWy6Cu1n0OiaAft0aEz
w0MNqVbElK5PrSRZvnfwISwcD2UCgYEA9K6PVsGAaNRMAxZZoHr0cSAjYl1puqi8
mi9pIZLgM8vjibhHRQWavJ596iTedMa7N+B3/i1YXD6MRETRq3zVqlvvZA+qSWmo
7HTpwsHcLv8XZ0ghvYumxGMv5EhgFc53E5WLkw9x8YiKbrDRhoW7vlDn8pMd6UYA
gKIPFMv0UgUCgYBbX+h587lwN52BUOMSKqeX7hlZY/Qek6ex3Vp/o7dGV/mSwZFm
r4+gFCozorMnebRMh+rEygj7z+uysi0/JCZraA9lfKdLtF8WBjvpHOh/lvBZBcsT
+aBaVsON8lhzUMkRk+gWfgc4YpNLACHc7rn9giRuz7YxhI46BlvBHEpJsQKBgBuz
186+wcccoi6HTUZ6JUrZlKgCY4IasJ/UVlbSxkeXAgAJuSf7ZnWMjD0CR515EqFU
7MD+aU6oVkE0eXis/ZP4LLZrf6AoMlPzOLQwNrmrb/7lj8xiD1OU10tFVnuhkKHL
AK55xTDPgLzfkBlm8satalVwiqZqoovtzT9RiCvxAoGAJpqDya0YvQweh/HMz4O0
sdOztP0FL/4R6uCx7g2WJCVuS1mT0QH6nTsuvI83Lka1a8g0zZmSBYubaEltwmiY
ZVX0j7kox7fdBDgPGuxnuCFdniChwTGxcQEPmkR9bzbH2ARqs3h+INjQNIXbfY1p
6naHb5lAGVSU06CDnKFQm2c=
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIID3TCCAsWgAwIBAgIJAKZ91kk1bQIJMA0GCSqGSIb3DQEBCwUAMIGEMQswCQYD
VQQGEwJBVDEOMAwGA1UECAwFVGlyb2wxEjAQBgNVBAcMCUlubnNicnVjazERMA8G
A1UECgwIQ3JvcHN0ZXIxDDAKBgNVBAsMA0RldjESMBAGA1UEAwwJMTI3LjAuMC4x
MRwwGgYJKoZIhvcNAQkBFg1ub25lQHRlc3Qub3JnMB4XDTE4MDIxMzA4Mzg1M1oX
DTE4MDMxNTA4Mzg1M1owgYQxCzAJBgNVBAYTAkFUMQ4wDAYDVQQIDAVUaXJvbDES
MBAGA1UEBwwJSW5uc2JydWNrMREwDwYDVQQKDAhDcm9wc3RlcjEMMAoGA1UECwwD
RGV2MRIwEAYDVQQDDAkxMjcuMC4wLjExHDAaBgkqhkiG9w0BCQEWDW5vbmVAdGVz
dC5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDtGlWjn9Sw2aV0
32H7le8Ra2cQRx5cS/m5R8HL0Tl/JlYwLBXNZcsUmnqOKCxJFilkBcj4BIAic5ZR
b1AyTPn1RERf6SbFLZGBUnYcLQDL6Z6qEILe0H5G30yFjdvjUVnhYPUsWW6H1tUF
EhtuMduj2o+2YUaiE6UQAD5EfX09jzGcwNx/Hj1XXvpRSfDBQWlWxkKOm6TqGoXH
FBAIGAH1gKehotGDd+YluOFp9qk8G2e2Tvpg7JQfaSoIT1ViHwg+0XSQVoVRNqWK
XQ+MD+dCcwbcL7kAbnLW1x1a4ym9as5t/iDUjVldh70coJ9uaa1CHklAZzheH6Xc
up6cvqb5AgMBAAGjUDBOMB0GA1UdDgQWBBS0HEgRO22ECtLckZp+LP+0nNg8SzAf
BgNVHSMEGDAWgBS0HEgRO22ECtLckZp+LP+0nNg8SzAMBgNVHRMEBTADAQH/MA0G
CSqGSIb3DQEBCwUAA4IBAQCtdBrbmYNZCw/zpxe81VHH5be3XGw/VFOmTTDdWi6O
q9RHoHpwDWsJd1T0h/o5wzkpIFGADPQCtR7SGktoUS40GUmaiQXQijedGSMg56YN
f/NwLm/zf93i3gbnK8l/zNb7BtEPzR/46nezlWRxs57Iw2Kw2bFQA8SKjlbqllhf
KlDgu8QaFxnoaIuMcZKDIGlEeO0wnEzqjDF438aAt/ft0SPs7ae6PokR2YhMO2SK
0d9IrVqF74lls3Kmddkt8mIbk77B4eRtmB28M/hMVUcun3598qfK77OsK+bm2AEc
krn3a6vyCg6oV/i4icbIHHLNXvHUSoZ20h43NPZ/3eW5
-----END CERTIFICATE-----
gitextract_0pky7meu/ ├── README.md ├── docker-compose.yml ├── generate_token.py └── jupyter.pem
Condensed preview — 4 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7K chars).
[
{
"path": "README.md",
"chars": 2453,
"preview": "# Jupyter with Docker Compose\n\nThis repository contains a simple docker-compose definition for launching the popular Jup"
},
{
"path": "docker-compose.yml",
"chars": 536,
"preview": "version: '3'\nservices:\n datascience-notebook:\n image: jupyter/datascience-notebook\n volumes:\n - ${"
},
{
"path": "generate_token.py",
"chars": 508,
"preview": "#!/usr/bin/env sh\nimport IPython as IPython\n\nif __name__ == \"__main__\":\n print(\"Generate a access token\")\n from ar"
},
{
"path": "jupyter.pem",
"chars": 3103,
"preview": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDtGlWjn9Sw2aV0\n32H7le8Ra2cQRx5cS/m5R8HL0Tl"
}
]
About this extraction
This page contains the full source code of the stefanproell/jupyter-notebook-docker-compose GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 4 files (6.4 KB), approximately 3.1k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.