From 270535cac6f72b5307474b6bb033acc13b31baf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?toni=20=28=EC=9D=B4=EC=86=8C=EC=9D=80=29?= <144209738+saokiritoni@users.noreply.github.com> Date: Thu, 2 Oct 2025 14:13:52 +0900 Subject: [PATCH 1/3] =?UTF-8?q?[docs]=20readme=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 54f12c7..67bfad5 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,35 @@ -# DECS -Dongguk Education(Elastic이 되게끔 k8s 도입 예정) Containter Service 입니다. +## 이미지 버전 요약 +각 이미지 태그는 생성된 날짜(YYMMDD)를 따르며, latest 태그는 항상 최신 버전의 이미지를 가리킵니다. +| 이미지 태그 (Image Tag) | TensorFlow 버전 | CUDA / cuDNN | 베이스 OS (Base OS) | 주요 변경사항 및 설명 | +| :--- | :--- | :--- | :--- | :--- | +| `dguailab/decs:latest`
`dguailab/decs:251002` | **2.18.0** | CUDA 12.5
cuDNN 8.9 | Ubuntu 22.04 | **(최신)** TensorFlow 2.18.0 업그레이드, 최신 GPU 환경 지원 | +| `dguailab/decs:250926` | **2.13.0** | CUDA 11.8
cuDNN 8.6 | Ubuntu 20.04 | **(이전 안정 버전)** TensorFlow 2.13.0 기반의 안정화 버전 | +## 사용 방법 +필요한 버전의 이미지를 Docker Hub에서 pull 받아 사용합니다. + +### 최신 버전 사용하기 +latest 태그를 사용하여 항상 최신 버전의 이미지를 받을 수 있습니다. +``` +docker pull dguailab/decs:latest +``` + +### 날짜 태그를 직접 명시하여 받기 +``` +docker pull dguailab/decs:251002 +``` + +### 특정 구버전 사용하기 +이전 버전의 TensorFlow 환경이 필요한 경우, 해당 날짜 태그를 명시하여 이미지를 받습니다. +``` +docker pull dguailab/decs:250926 +``` + + +# 빌드 자동화 +이 Docker 이미지는 GitHub Actions를 통해 자동으로 빌드 및 배포됩니다. +- 실행 조건: decsYYMMDD 형식의 브랜치가 develop 브랜치로 병합(merge)될 때 +- 자동 생성 태그: +- 브랜치 이름에서 추출한 날짜 태그 (예: `dguailab/decs:251002`) +- 최신 버전을 가리키는 latest 태그 (`dguailab/decs:latest`) From ad68e33d69eb5162598806d2387af412b6bf05e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?toni=20=28=EC=9D=B4=EC=86=8C=EC=9D=80=29?= <144209738+saokiritoni@users.noreply.github.com> Date: Thu, 2 Oct 2025 14:19:03 +0900 Subject: [PATCH 2/3] =?UTF-8?q?[docs]=20=EB=85=B8=EC=85=98=20=EB=AC=B8?= =?UTF-8?q?=EC=84=9C=20=EB=A7=81=ED=81=AC=20=EC=B2=A8=EB=B6=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 67bfad5..ca68345 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -## 이미지 버전 요약 +## 🗒️ 이미지 버전 요약 각 이미지 태그는 생성된 날짜(YYMMDD)를 따르며, latest 태그는 항상 최신 버전의 이미지를 가리킵니다. | 이미지 태그 (Image Tag) | TensorFlow 버전 | CUDA / cuDNN | 베이스 OS (Base OS) | 주요 변경사항 및 설명 | @@ -6,7 +6,7 @@ | `dguailab/decs:latest`
`dguailab/decs:251002` | **2.18.0** | CUDA 12.5
cuDNN 8.9 | Ubuntu 22.04 | **(최신)** TensorFlow 2.18.0 업그레이드, 최신 GPU 환경 지원 | | `dguailab/decs:250926` | **2.13.0** | CUDA 11.8
cuDNN 8.6 | Ubuntu 20.04 | **(이전 안정 버전)** TensorFlow 2.13.0 기반의 안정화 버전 | -## 사용 방법 +## ⚙️ 사용 방법 필요한 버전의 이미지를 Docker Hub에서 pull 받아 사용합니다. ### 최신 버전 사용하기 @@ -27,9 +27,14 @@ docker pull dguailab/decs:250926 ``` -# 빌드 자동화 +# ⚒️ 빌드 자동화 이 Docker 이미지는 GitHub Actions를 통해 자동으로 빌드 및 배포됩니다. - 실행 조건: decsYYMMDD 형식의 브랜치가 develop 브랜치로 병합(merge)될 때 - 자동 생성 태그: - 브랜치 이름에서 추출한 날짜 태그 (예: `dguailab/decs:251002`) - 최신 버전을 가리키는 latest 태그 (`dguailab/decs:latest`) + + +


+### 🔗 관리자용 노션 문서 링크 +https://www.notion.so/DECS-280c7692a263802ca40ff68b38f58dd1?source=copy_link From 76d65c6f6bfc3150095183dfe7680d76ac1ee568 Mon Sep 17 00:00:00 2001 From: Junyoung Im Date: Thu, 23 Oct 2025 13:41:21 +0900 Subject: [PATCH 3/3] correct jupyter notebook --- entrypoint.sh | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index 8f95799..cb2113d 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -80,16 +80,33 @@ service ssh restart # jupyter lab 에서 생성한 ipynb 파일을 저장할 디렉토리 생성 (없는경우만 신규 생성) if [ ! -d "/home/$USER_ID/decs_jupyter_lab" ]; then - mkdir /home/$USER_ID/decs_jupyter_lab - echo "Created /home/$USER_ID/decs_jupyter_lab dir...." + mkdir /home/$USER_ID/decs_jupyter_lab + echo "Created /home/$USER_ID/decs_jupyter_lab dir...." +fi + +# jupyter lab config 파일이 없으면 생성 +mkdir -p /home/$USER_ID/.jupyter/ + +if [ ! -f /home/$USER_ID/.jupyter/jupyter_notebook_config.py ]; then + echo "jupyter_notebook_config.py not found, generating..." + /opt/anaconda3/bin/jupyter notebook --generate-config + cp /root/.jupyter/jupyter_notebook_config.py /home/$USER_ID/.jupyter/ +else + echo "jupyter_notebook_config.py already exists." fi # jupyter lab 접속 설정 -sed -i "1i c.JupyterApp.config_file_name = 'jupyter_notebook_config.py'\nc.NotebookApp.allow_origin = '*'\nc.NotebookApp.ip = '0.0.0.0'\nc.NotebookApp.open_browser = False\nc.NotebookApp.allow_remote_access = True\nc.NotebookApp.allow_root = True\nc.NotebookApp.notebook_dir='/home/$USER_ID/decs_jupyter_lab'" /jupyter_config/jupyter_notebook_config.py +sed -i "1i c.JupyterApp.config_file_name = 'jupyter_notebook_config.py'\nc.NotebookApp.allow_origin = '*'\nc.NotebookApp.ip = '0.0.0.0'\nc.NotebookApp.open_browser = False\nc.NotebookApp.allow_remote_access = True\nc.NotebookApp.allow_root = True\nc.NotebookApp.notebook_dir='/home/$USER_ID/decs_jupyter_lab'" /home/$USER_ID/.jupyter/jupyter_notebook_config.py + +# Jupyter Lab 토큰을 랜덤 문자열로 생성하고 저장 +TOKEN=$(tr -dc A-Za-z0-9 /home/$USER_ID/decs_jupyter_lab/jupyter_token.txt +chmod 600 /home/$USER_ID/decs_jupyter_lab/jupyter_token.txt +chown $USER_ID:$USER_ID /home/$USER_ID/decs_jupyter_lab/jupyter_token.txt # jupyter_lab 기동 echo "trying jupyter lab..." -nohup /opt/anaconda3/bin/jupyter lab --NotebookApp.token=decs --config=/jupyter_config/jupyter_notebook_config.py >/dev/null 2>&1 & +nohup /opt/anaconda3/bin/jupyter lab --NotebookApp.token=$TOKEN --config=/home/$USER_ID/.jupyter/jupyter_notebook_config.py >/dev/null 2>&1 & echo "jupyter lab listening!" # ldconfig permission 오류 방지