From d47f912d286efd935a4516848a5c781adce4a489 Mon Sep 17 00:00:00 2001 From: protsenkovi Date: Sat, 2 Nov 2024 11:45:31 +0400 Subject: [PATCH] added scripts for docker vscode environment --- Dockerfile | 39 +++++++++++++++++++++++++++++++++++++++ build.sh | 8 ++++++++ start.sh | 26 ++++++++++++++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 Dockerfile create mode 100755 build.sh create mode 100755 start.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9cd3d7e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,39 @@ +FROM pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime +ENV TZ=Europe/Samara +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +ARG USER +ARG GROUP +ARG UID +ARG GID + +RUN apt update +RUN apt install sudo -y +RUN sed -i 's/^%sudo.*/%sudo ALL=(ALL) NOPASSWD: ALL/' /etc/sudoers + +RUN groupadd --gid ${GID} ${GROUP} +RUN useradd --shell /bin/bash --uid ${UID} --gid ${GID} -G sudo --create-home ${USER} +RUN mkdir /wd +RUN chown ${USER}:${GROUP} /wd + +# SYSTEM CONFIGURATION +RUN apt install vim htop mc curl wget git tree -y +RUN curl -fsSL https://code-server.dev/install.sh | sh +RUN /opt/conda/bin/conda install -n base ipykernel --update-deps --force-reinstall -y + +USER ${USER} + +# USER CONFIGURATION +# RUN ... + +RUN openssl req -x509 -newkey rsa:4096 -keyout /home/${USER}/key.pem -out /home/${USER}/cert.pem -sha256 -nodes -days 365 -subj "/C=RU/ST=SamaraRegion/L=Samara/O=SSAU/OU=LIAV/CN=vscode.ssau.ru/" +RUN mkdir -p /home/${USER}/.config/code-server +RUN echo 'bind-addr: 0.0.0.0:8443' >> /home/${USER}/.config/code-server/config.yaml +RUN echo "cert: /home/${USER}/cert.pem" >> /home/${USER}/.config/code-server/config.yaml +RUN echo "cert-key: /home/${USER}/key.pem" >> /home/${USER}/.config/code-server/config.yaml + +RUN code-server --install-extension ms-python.python + +ENV SHELL=/bin/bash +SHELL ["/bin/bash", "--login", "-i", "-c"] +WORKDIR /wd diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..7796d61 --- /dev/null +++ b/build.sh @@ -0,0 +1,8 @@ +#!/bin/bash +CURDIRNAME=${PWD##*/} + +docker build . -t ${USER}_${CURDIRNAME}_vscode \ + --build-arg USER=${USER} \ + --build-arg GROUP=${USER} \ + --build-arg UID=$(id -u ${USER}) \ + --build-arg GID=$(id -g ${USER}) diff --git a/start.sh b/start.sh new file mode 100755 index 0000000..6e52dfe --- /dev/null +++ b/start.sh @@ -0,0 +1,26 @@ +#!/bin/bash +CURDIRNAME=${PWD##*/} + +VSCODE_PORT=8400 +YOURAPP_INSIDE_DOCKER_PORT=24000 +PASSWORD=$(openssl rand -base64 45) +docker run \ + -d \ + --rm \ + --gpus "device=0" \ + -p ${VSCODE_PORT}:8443 \ + -p ${YOURAPP_INSIDE_DOCKER_PORT}:7443 \ + -v $(pwd):/wd \ + -v /home/${USER}/.ssh/:/home/${USER}/.ssh/:ro \ + --shm-size=10gb \ + --name ${USER}_${CURDIRNAME}_vscode \ + -e PASSWORD="${PASSWORD}" \ + ${USER}_${CURDIRNAME}_vscode \ + code-server +sleep 1 +docker logs ${USER}_${CURDIRNAME}_vscode +echo "" +echo "Address: https://$(hostname -i | awk '{ print $1; }'):${VSCODE_PORT}" +echo "Password: $PASSWORD" +echo "" +echo "You can use this port for application you develop: $YOURAPP_INSIDE_DOCKER_PORT"