diff options
-rw-r--r-- | .env | 28 | ||||
-rw-r--r-- | Dockerfile | 8 | ||||
-rw-r--r-- | docker-compose.yml | 34 | ||||
-rwxr-xr-x | generate_token.py | 17 | ||||
-rw-r--r-- | jupyter.pem | 51 |
5 files changed, 28 insertions, 110 deletions
@@ -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----- |