aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.env28
-rw-r--r--Dockerfile8
-rw-r--r--docker-compose.yml34
-rwxr-xr-xgenerate_token.py17
-rw-r--r--jupyter.pem51
5 files changed, 28 insertions, 110 deletions
diff --git a/.env b/.env
deleted file mode 100644
index 9de96de..0000000
--- a/.env
+++ /dev/null
@@ -1,28 +0,0 @@
-# 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
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..90d0cb8
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,8 @@
+FROM alpine:3.15 as certbuilder
+RUN apk add openssl
+WORKDIR /certs
+RUN openssl req -nodes -new -x509 -subj="/C=US/ST=Denial/L=springfield/O=Dis/CN=localhost" -keyout server.key -out server.cert && cat server.key server.cert > cert.pem
+
+FROM python:3.10.5-slim-buster
+RUN pip install jupyterlab scipy numpy poetry numba torch tensorflow transformers huggingface-hub
+COPY --from=certbuilder /certs /certs
diff --git a/docker-compose.yml b/docker-compose.yml
index 8856451..3d3b61b 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,15 +1,21 @@
-version: '3'
+version: '3.8'
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"
+ jupyterlab_ai:
+ image: devijlab
+ build:
+ context: .
+ volumes:
+ - /home/jupyterlab_docker/datasets:/datasets:ro
+ - /home/jupyterlab_docker/notebooks:/opt/app/data
+ ports:
+ - 8889:8888
+ networks:
+ - devijlab-net
+ entrypoint: ["jupyter", "lab"]
+ command: ["--ip=0.0.0.0", "--port=8888", "--notebook-dir=/opt/app/data", "--allow-root"]
+ environment:
+ - JUPYTER_ENABLE_LAB=yes
+volumes:
+ devijlab-vault:
+networks:
+ devijlab-net:
diff --git a/generate_token.py b/generate_token.py
deleted file mode 100755
index 54e3c39..0000000
--- a/generate_token.py
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/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)
diff --git a/jupyter.pem b/jupyter.pem
deleted file mode 100644
index 1457bbb..0000000
--- a/jupyter.pem
+++ /dev/null
@@ -1,51 +0,0 @@
------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-----