nateraw commited on
Commit
89e5b6e
1 Parent(s): dc29da8

Synced repo using 'sync_with_huggingface' Github Action

Browse files
Files changed (6) hide show
  1. Dockerfile +100 -0
  2. login.html +67 -0
  3. on_startup.sh +5 -0
  4. packages.txt +1 -0
  5. requirements.txt +1 -0
  6. start_server.sh +16 -0
Dockerfile ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM nvidia/cuda:11.3.1-base-ubuntu20.04
2
+
3
+ # Remove any third-party apt sources to avoid issues with expiring keys.
4
+ RUN rm -f /etc/apt/sources.list.d/*.list
5
+
6
+ ENV DEBIAN_FRONTEND=noninteractive \
7
+ TZ=Europe/Paris
8
+
9
+ # Install some basic utilities
10
+ RUN apt-get update && apt-get install -y \
11
+ curl \
12
+ ca-certificates \
13
+ sudo \
14
+ git \
15
+ git-lfs \
16
+ zip \
17
+ unzip \
18
+ htop \
19
+ bzip2 \
20
+ libx11-6 \
21
+ build-essential \
22
+ libsndfile-dev \
23
+ software-properties-common \
24
+ && rm -rf /var/lib/apt/lists/*
25
+
26
+ RUN add-apt-repository ppa:flexiondotorg/nvtop
27
+ RUN apt-get upgrade -y
28
+ RUN apt-get install -y nvtop
29
+
30
+ RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
31
+ RUN apt-get install -y nodejs
32
+ RUN npm install -g configurable-http-proxy
33
+
34
+ # Create a working directory
35
+ RUN mkdir /app
36
+ WORKDIR /app
37
+
38
+ # Create a non-root user and switch to it
39
+ RUN adduser --disabled-password --gecos '' --shell /bin/bash user \
40
+ && chown -R user:user /app
41
+ RUN echo "user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/90-user
42
+ USER user
43
+
44
+ # All users can use /home/user as their home directory
45
+ ENV HOME=/home/user
46
+ RUN mkdir $HOME/.cache $HOME/.config \
47
+ && chmod -R 777 $HOME
48
+
49
+ # Set up the Conda environment
50
+ ENV CONDA_AUTO_UPDATE_CONDA=false \
51
+ PATH=$HOME/miniconda/bin:$PATH
52
+ RUN curl -sLo ~/miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh \
53
+ && chmod +x ~/miniconda.sh \
54
+ && ~/miniconda.sh -b -p ~/miniconda \
55
+ && rm ~/miniconda.sh \
56
+ && conda clean -ya
57
+
58
+ WORKDIR $HOME/app
59
+
60
+ #######################################
61
+ # Start root user section
62
+ #######################################
63
+
64
+ USER root
65
+
66
+ # User Debian packages
67
+ ## Security warning : Potential user code executed as root (build time)
68
+ COPY --chown=root packages.txt /root/packages.txt
69
+ RUN apt-get update && xargs -r -a /root/packages.txt apt-get install -y && rm -rf /var/lib/apt/lists/*
70
+
71
+ COPY --chown=root on_startup.sh /root/on_startup.sh
72
+ RUN chmod +x /root/on_startup.sh
73
+ RUN /root/on_startup.sh
74
+
75
+ # Rerun chmod on home dir in case any new files need permisisons
76
+ RUN chmod -R 777 $HOME
77
+
78
+ #######################################
79
+ # End root user section
80
+ #######################################
81
+
82
+ USER user
83
+
84
+ # Copy the current directory contents into the container at $HOME/app setting the owner to the user
85
+ COPY --chown=user . $HOME/app
86
+
87
+ RUN chmod +x start_server.sh
88
+
89
+ RUN pip install --no-cache-dir --upgrade -r $HOME/app/requirements.txt
90
+ COPY --chown=user login.html /home/user/miniconda/lib/python3.9/site-packages/jupyter_server/templates/login.html
91
+
92
+ ENV PYTHONUNBUFFERED=1 \
93
+ GRADIO_ALLOW_FLAGGING=never \
94
+ GRADIO_NUM_PORTS=1 \
95
+ GRADIO_SERVER_NAME=0.0.0.0 \
96
+ GRADIO_THEME=huggingface \
97
+ SYSTEM=spaces \
98
+ SHELL=/bin/bash
99
+
100
+ CMD ["./start_server.sh"]
login.html ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends "page.html" %}
2
+
3
+
4
+ {% block stylesheet %}
5
+ {% endblock %}
6
+
7
+ {% block site %}
8
+
9
+ <div id="jupyter-main-app" class="container">
10
+
11
+ <img src="https://huggingface.co/front/assets/huggingface_logo-noborder.svg" alt="Hugging Face Logo">
12
+ <h4>You can duplicate this Space to run it private.</h4>
13
+ <br>
14
+ <a class="duplicate-button" style="display:inline-block" target="_blank" href="https://huggingface.co/spaces/DockerTemplates/jupyterlab?duplicate=true">
15
+ <img style="margin: 0" src="https://img.shields.io/badge/-Duplicate%20Space-blue?labelColor=white&amp;style=flat&amp;logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAP5JREFUOE+lk7FqAkEURY+ltunEgFXS2sZGIbXfEPdLlnxJyDdYB62sbbUKpLbVNhyYFzbrrA74YJlh9r079973psed0cvUD4A+4HoCjsA85X0Dfn/RBLBgBDxnQPfAEJgBY+A9gALA4tcbamSzS4xq4FOQAJgCDwV2CPKV8tZAJcAjMMkUe1vX+U+SMhfAJEHasQIWmXNN3abzDwHUrgcRGmYcgKe0bxrblHEB4E/pndMazNpSZGcsZdBlYJcEL9Afo75molJyM2FxmPgmgPqlWNLGfwZGG6UiyEvLzHYDmoPkDDiNm9JR9uboiONcBXrpY1qmgs21x1QwyZcpvxt9NS09PlsPAAAAAElFTkSuQmCC&amp;logoWidth=14" alt="Duplicate Space"></a>
16
+ <br>
17
+ <br>
18
+ <h4>Token is <span style="color:orange;">huggingface</span></h4>
19
+
20
+ {% if login_available %}
21
+ {# login_available means password-login is allowed. Show the form. #}
22
+ <div class="row">
23
+ <div class="navbar col-sm-8">
24
+ <div class="navbar-inner">
25
+ <div class="container">
26
+ <div class="center-nav">
27
+ <form action="{{base_url}}login?next={{next}}" method="post" class="navbar-form pull-left">
28
+ {{ xsrf_form_html() | safe }}
29
+ {% if token_available %}
30
+ <label for="password_input"><strong>{% trans %}Token:{% endtrans
31
+ %}</strong></label>
32
+ {% else %}
33
+ <label for="password_input"><strong>{% trans %}Password:{% endtrans %}</strong></label>
34
+ {% endif %}
35
+ <input type="password" name="password" id="password_input" class="form-control">
36
+ <button type="submit" class="btn btn-default" id="login_submit">{% trans %}Log in{% endtrans
37
+ %}</button>
38
+ </form>
39
+ </div>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ {% else %}
45
+ <p>{% trans %}No login available, you shouldn't be seeing this page.{% endtrans %}</p>
46
+ {% endif %}
47
+ {% if message %}
48
+ <div class="row">
49
+ {% for key in message %}
50
+ <div class="message {{key}}">
51
+ {{message[key]}}
52
+ </div>
53
+ {% endfor %}
54
+ </div>
55
+ {% endif %}
56
+ {% if token_available %}
57
+ {% block token_message %}
58
+
59
+ {% endblock token_message %}
60
+ {% endif %}
61
+ </div>
62
+
63
+ {% endblock %}
64
+
65
+
66
+ {% block script %}
67
+ {% endblock %}
on_startup.sh ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ # Write some commands here that will run on root user before startup.
3
+ # For example, to clone transformers and install it in dev mode:
4
+ # git clone https://github.com/huggingface/transformers.git
5
+ # cd transformers && pip install -e ".[dev]"
packages.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ tree
requirements.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ jupyterlab
start_server.sh ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ JUPYTER_TOKEN="${JUPYTER_TOKEN:=huggingface}"
3
+
4
+ echo "Starting Jupyter Lab with token $JUPYTER_TOKEN"
5
+
6
+ jupyter-lab \
7
+ --ip 0.0.0.0 \
8
+ --port 7860 \
9
+ --no-browser \
10
+ --allow-root \
11
+ --ServerApp.token="$JUPYTER_TOKEN" \
12
+ --ServerApp.tornado_settings="{'headers': {'Content-Security-Policy': 'frame-ancestors *'}}" \
13
+ --ServerApp.cookie_options="{'SameSite': 'None', 'Secure': True}" \
14
+ --ServerApp.disable_check_xsrf=True \
15
+ --LabApp.news_url=None \
16
+ --LabApp.check_for_updates_class="jupyterlab.NeverCheckForUpdate"