Launcher 추가 방법
Launcher는 실행 중인 워크스페이스 안에서 LabPod이 시작할 수 있는 앱 정의입니다. JupyterLab, code-server, TensorBoard, MLflow, Streamlit 같은 도구가 여기에 해당합니다.
관련된 workflow는 세 가지입니다.
- 내 비공개 템플릿에 launcher 추가.
- 관리자에게 전역 catalog에 재사용 가능한 launcher 추가 요청.
- 실행 중인 워크스페이스에서 Extra apps로 일회성 앱 노출.
내 템플릿에 launcher 추가
섹션 제목: “내 템플릿에 launcher 추가”내가 소유한 템플릿에서 새 워크스페이스를 만들 때마다 해당 앱이 Apps 섹션에 보이게 하려면 이 방법을 사용합니다.

- 템플릿이 아직 없다면 Templates → My templates에서 먼저 만듭니다.
- Templates → My templates를 엽니다.
- 내 템플릿을 선택합니다.
- Ports 섹션에서 Import launcher를 클릭합니다.
- catalog에서 launcher를 선택합니다.
- 해당 앱이 템플릿의 기본 앱이어야 한다면 launcher 하나를 Primary로 표시합니다.
- Save를 클릭합니다.
- 이 템플릿으로 새 워크스페이스를 만듭니다.
Launcher를 import하면 catalog 정의가 템플릿으로 복사됩니다. 나중에 catalog가 바뀌어도 내 템플릿에는 자동으로 반영되지 않습니다.
수동 launcher 추가
섹션 제목: “수동 launcher 추가”Catalog에 아직 없는 앱이면 수동 launcher를 추가합니다.
- Templates → My templates를 엽니다.
- 내 템플릿을 선택합니다.
- Ports에서 Add port를 클릭합니다.
- Name을
streamlit이나gradio같은 소문자 identifier로 설정합니다. - Label에 표시 이름을 넣습니다.
- Container port를 앱의 일반 포트로 설정합니다. 예: Streamlit은
8501. - 고급 launcher 필드를 엽니다.
- Command template, Probe command, Readiness path, Install hint를 채웁니다.
- 템플릿을 저장합니다.
Launcher command는 반드시 ${HOST_PORT}에 bind해야 합니다. LabPod이 runtime에 이 포트를
할당합니다.
Streamlit command 예:
streamlit run ${SCRIPT} --server.address=0.0.0.0 --server.port=${HOST_PORT} --server.baseUrlPath=${BASE_PATH_NO_SLASH} --server.headless=trueOption schema 예:
{"fields":[{"name":"SCRIPT","type":"file","label":"App script","default":"/work/app.py","required":true}]}유용한 command token:
| Token | 의미 |
|---|---|
${HOST_PORT} | 앱이 bind해야 하는 runtime port입니다. Launcher에는 필수입니다. |
${BASE_PATH} | trailing slash가 있는 proxy path입니다. |
${BASE_PATH_NO_SLASH} | trailing slash가 없는 proxy path입니다. |
${AUTH_TOKEN} | 지원되는 credential-aware 앱용 launcher별 token입니다. |
${AUTH_TOKEN_SHA256} | code-server password auth에 쓰는 SHA-256 형식입니다. |
| Option key | ${SCRIPT}나 ${LOGDIR}처럼 option schema에서 받은 값입니다. |
Probe command는 컨테이너 안에서 LabPod이 확인하는 실행 파일입니다. 예: streamlit,
jupyter, tensorboard. Probe가 없으면 launcher card에는 Start 버튼 대신 install hint가
표시됩니다.
이미지에 launcher 포함
섹션 제목: “이미지에 launcher 포함”템플릿 launcher는 이미지 안에 앱 실행 파일이 있어야 동작합니다. 비공개 템플릿이라면 템플릿 Dockerfile을 편집해 앱을 설치합니다.
예:
RUN pip install --no-cache-dir streamlit그 다음 템플릿 이미지를 빌드하고 해당 템플릿으로 새 워크스페이스를 만듭니다. 기존 워크스페이스가 예전 이미지를 사용 중이면 다시 만들거나, 그 워크스페이스 안에 누락된 패키지를 설치한 뒤 Apps 섹션에서 Refresh를 클릭합니다.
관리자에게 재사용 launcher 추가 요청
섹션 제목: “관리자에게 재사용 launcher 추가 요청”재사용 catalog는 root 관리자만 /admin/launchers에서 편집할 수 있습니다.
관리자는 launcher를 한 번 만들 때 다음 값을 설정합니다.
- Name과 Label.
- Container port.
${HOST_PORT}를 사용하는 Command template.- Probe command.
- Readiness path.
- Install hint.
- 선택 사항인 JSON Option schema.
- code-server처럼 base path를 지원하지 않는 앱을 위한 선택 사항 Proxy strips prefix.
저장 후 사용자와 관리자는 이 launcher를 템플릿으로 import할 수 있습니다. 기존 템플릿은 자동으로 변경되지 않습니다.
실행 중인 워크스페이스에서 일회성 앱 노출
섹션 제목: “실행 중인 워크스페이스에서 일회성 앱 노출”재사용 가능한 템플릿 launcher가 필요하지 않다면 Extra apps를 사용합니다.

- 워크스페이스를 시작합니다.
- 워크스페이스 상세 페이지를 엽니다.
- Extra apps에서 Add app을 클릭합니다.
- preset을 고르거나 custom name을 입력합니다.
- LabPod Terminal 안에서 앱을 시작하고 할당된 포트에 bind합니다.
- Extra apps 카드의 Open을 클릭합니다.
예:
streamlit run app.py --server.port $LABPOD_USER_PORT_1Extra apps는 워크스페이스별 설정입니다. 실험에는 Extra apps가 좋고 새 워크스페이스마다 반복해서 쓰는 도구는 템플릿 launcher가 더 적합합니다.