Pengyang Cai commited on
Commit
ddb382d
·
1 Parent(s): e1b928b
Files changed (7) hide show
  1. Dockerfile +136 -0
  2. README.md +7 -5
  3. gitattributes +34 -0
  4. on_startup.sh +7 -0
  5. packages.txt +9 -0
  6. requirements.txt +6 -0
  7. start_server.sh +9 -0
Dockerfile ADDED
@@ -0,0 +1,136 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM nvidia/cuda:11.3.1-base-ubuntu20.04
2
+
3
+ ENV DEBIAN_FRONTEND=noninteractive \
4
+ TZ=Europe/Paris
5
+
6
+ # Remove any third-party apt sources to avoid issues with expiring keys.
7
+ # Install some basic utilities
8
+ RUN rm -f /etc/apt/sources.list.d/*.list && \
9
+ apt-get update && apt-get install -y \
10
+ curl \
11
+ ca-certificates \
12
+ sudo \
13
+ git \
14
+ git-lfs \
15
+ zip \
16
+ unzip \
17
+ htop \
18
+ bzip2 \
19
+ libx11-6 \
20
+ build-essential \
21
+ libsndfile-dev \
22
+ software-properties-common \
23
+ && rm -rf /var/lib/apt/lists/*
24
+
25
+ ARG BUILD_DATE
26
+ ARG VERSION
27
+ ARG CODE_RELEASE
28
+ RUN \
29
+ echo "**** install openvscode-server runtime dependencies ****" && \
30
+ apt-get update && \
31
+ apt-get install -y \
32
+ jq \
33
+ libatomic1 \
34
+ nano \
35
+ net-tools \
36
+ netcat && \
37
+ echo "**** install openvscode-server ****" && \
38
+ if [ -z ${CODE_RELEASE+x} ]; then \
39
+ CODE_RELEASE=$(curl -sX GET "https://api.github.com/repos/gitpod-io/openvscode-server/releases/latest" \
40
+ | awk '/tag_name/{print $4;exit}' FS='[""]' \
41
+ | sed 's|^openvscode-server-v||'); \
42
+ fi && \
43
+ mkdir -p /app/openvscode-server && \
44
+ curl -o \
45
+ /tmp/openvscode-server.tar.gz -L \
46
+ "https://github.com/gitpod-io/openvscode-server/releases/download/openvscode-server-v${CODE_RELEASE}/openvscode-server-v${CODE_RELEASE}-linux-x64.tar.gz" && \
47
+ tar xf \
48
+ /tmp/openvscode-server.tar.gz -C \
49
+ /app/openvscode-server/ --strip-components=1 && \
50
+ echo "**** clean up ****" && \
51
+ apt-get clean && \
52
+ rm -rf \
53
+ /tmp/* \
54
+ /var/lib/apt/lists/* \
55
+ /var/tmp/*
56
+ COPY root/ /
57
+
58
+ RUN add-apt-repository ppa:flexiondotorg/nvtop && \
59
+ apt-get upgrade -y && \
60
+ apt-get install -y --no-install-recommends nvtop
61
+
62
+ RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - && \
63
+ apt-get install -y nodejs && \
64
+ npm install -g configurable-http-proxy
65
+
66
+ # Create a working directory
67
+ WORKDIR /app
68
+
69
+ # Create a non-root user and switch to it
70
+ RUN adduser --disabled-password --gecos '' --shell /bin/bash user \
71
+ && chown -R user:user /app
72
+ RUN echo "user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/90-user
73
+ USER user
74
+
75
+ # All users can use /home/user as their home directory
76
+ ENV HOME=/home/user
77
+ RUN mkdir $HOME/.cache $HOME/.config \
78
+ && chmod -R 777 $HOME
79
+
80
+ # Set up the Conda environment
81
+ ENV CONDA_AUTO_UPDATE_CONDA=false \
82
+ PATH=$HOME/miniconda/bin:$PATH
83
+ RUN curl -sLo ~/miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh \
84
+ && chmod +x ~/miniconda.sh \
85
+ && ~/miniconda.sh -b -p ~/miniconda \
86
+ && rm ~/miniconda.sh \
87
+ && conda clean -ya \
88
+ && conda install -c conda-forge nodejs xeus-python jupyterlab-drawio jupyterlab_templates
89
+
90
+ WORKDIR $HOME/app
91
+
92
+ #######################################
93
+ # Start root user section
94
+ #######################################
95
+
96
+ USER root
97
+
98
+ # User Debian packages
99
+ ## Security warning : Potential user code executed as root (build time)
100
+ RUN --mount=target=/root/packages.txt,source=packages.txt \
101
+ apt-get update && \
102
+ xargs -r -a /root/packages.txt apt-get install -y --no-install-recommends \
103
+ && rm -rf /var/lib/apt/lists/*
104
+
105
+ RUN --mount=target=/root/on_startup.sh,source=on_startup.sh,readwrite \
106
+ bash /root/on_startup.sh
107
+
108
+ RUN mkdir /data && chown user:user /data
109
+
110
+ #######################################
111
+ # End root user section
112
+ #######################################
113
+
114
+ USER user
115
+
116
+ # Python packages
117
+ RUN --mount=target=requirements.txt,source=requirements.txt \
118
+ pip install --no-cache-dir --upgrade -r requirements.txt && jupyter contrib nbextension install --user && jupyter labextension install @jupyterlab/debugger jupyterlab_vim jupyterlab_templates && jupyter nbextension enable codefolding/main && jupyter server extension enable --py jupyterlab_templates && jupyter serverextension enable --py jupyterlab --sys-prefix
119
+
120
+ # Copy the current directory contents into the container at $HOME/app setting the owner to the user
121
+ COPY --chown=user . $HOME/app
122
+
123
+ RUN chmod +x start_server.sh
124
+
125
+ ENV PYTHONUNBUFFERED=1 \
126
+ GRADIO_ALLOW_FLAGGING=never \
127
+ GRADIO_NUM_PORTS=1 \
128
+ GRADIO_SERVER_NAME=0.0.0.0 \
129
+ GRADIO_THEME=huggingface \
130
+ SYSTEM=spaces \
131
+ WORKDIR_PATH=/home/user/.vscode
132
+ SHELL=/bin/bash
133
+
134
+ EXPOSE 7860 3000
135
+
136
+ CMD ["./start_server.sh"]
README.md CHANGED
@@ -1,11 +1,13 @@
1
  ---
2
- title: Rust Environment
3
- emoji: 📈
4
- colorFrom: green
5
  colorTo: green
6
  sdk: docker
7
  pinned: false
8
- license: apache-2.0
 
 
9
  ---
10
 
11
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: Visual Studio Code
3
+ emoji: 💻🐳
4
+ colorFrom: yellow
5
  colorTo: green
6
  sdk: docker
7
  pinned: false
8
+ tags:
9
+ - vscode
10
+ - rust
11
  ---
12
 
13
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
gitattributes ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tflite filter=lfs diff=lfs merge=lfs -text
29
+ *.tgz filter=lfs diff=lfs merge=lfs -text
30
+ *.wasm filter=lfs diff=lfs merge=lfs -text
31
+ *.xz filter=lfs diff=lfs merge=lfs -text
32
+ *.zip filter=lfs diff=lfs merge=lfs -text
33
+ *.zst filter=lfs diff=lfs merge=lfs -text
34
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
on_startup.sh ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
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]"
6
+ #
7
+ mkdir -p /home/user/.vscode
packages.txt ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ tree
2
+ vim
3
+ gcc
4
+ cmake
5
+ clang
6
+ golang
7
+ gdb
8
+ lldb
9
+ nodejs
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ jupyterlab
2
+ notebook
3
+ ipython
4
+ pandas
5
+ numpy
6
+ jupyter_contrib_nbextensions
start_server.sh ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ # Default workspace directory
4
+ WORKSPACE_DIR="/data"
5
+
6
+ echo "Starting VSCode Server on $WORKDIR_PATH..."
7
+
8
+ # Use the determined directory as the base path for the VS Code server
9
+ exec /app/openvscode-server/bin/openvscode-server --host 0.0.0.0 --port 7860 --without-connection-token "${@}" --extensions-dir "$WORKDIR_PATH/.vscode-server/extensions" --user-data-dir "$WORKDIR_PATH/.vscode-server/data" --