> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/deployment/ko/roboflow-cloud/dedicated-deployments/startup-scripts.md).

# 시작 스크립트

추론이 시작되기 전에 전용 배포에서 Bash 스크립트를 루트 권한으로 실행합니다.

시작 스크립트는 추론이 시작되기 전에 전용 배포에서 패키지를 설치하거나 데이터를 다운로드합니다. 모델이나 워크플로에 추론 컨테이너에 포함되지 않은 Python 패키지, 시스템 도구, 또는 데이터 파일이 필요할 때 사용하세요.

{% hint style="info" %}
시작 스크립트는 기본적으로 꺼져 있습니다. [영업팀에 문의](https://roboflow.com/sales) 하여 워크스페이스에서 활성화하세요.
{% endhint %}

## 정보

스크립트는 Bash입니다. 새 복제본과 재시작을 포함하여 모든 컨테이너 시작 시 root로 실행됩니다. 이후 추론은 non-root 사용자로 실행됩니다.

스크립트는 10분 이내에 완료되어야 합니다. 오류나 시간 초과가 발생하면 추론이 시작되지 않으며, 컨테이너는 다시 시도합니다. 스크립트는 다음으로 시작하세요. `set -e` 그래야 실패한 명령에서 중지되며, 다시 실행해도 안전하게 작성하세요.

미리 준비되는 것은 없습니다. pip와 같이 필요한 도구를 직접 설치하세요. 다음 아래의 파일은 `/userdata` 컨테이너가 교체되거나 배포가 일시 중지되면 사라질 수 있으므로, 매 시작 시 다시 다운로드하세요. 스크립트가 export하는 환경 변수는 추론에 전달되지 않습니다.

`INFERENCE_UID` 및 `INFERENCE_GID` 는 추론이 실행되는 숫자 사용자 ID와 그룹 ID를 담고 있습니다. 이를 사용해 스크립트가 생성한 파일에 추론이 접근할 수 있도록 하세요.

```bash
#!/bin/bash
set -e
apt-get update
apt-get install -y --no-install-recommends curl jq python3-pip
python3 -m pip install 'humanize==4.12.3'
mkdir -p /userdata/custom-data
curl --fail --location 'https://YOUR_HOST/data.json' --output /userdata/custom-data/data.json
chown -R "$INFERENCE_UID:$INFERENCE_GID" /userdata/custom-data
```

스크립트는 최대 64 KiB까지 가능하며 NUL 문자를 포함할 수 없습니다.

## 웹 앱

"Startup Script (Bash)" 필드에 스크립트를 입력하세요. 이 필드는 "Create a Dedicated Deployment" 대화상자와 기존 배포의 설정에 있습니다. 제거하려면 "Clear Script"를 선택하세요.

스크립트를 저장해도 실행 중인 컨테이너는 재시작되지 않습니다. 변경 사항은 컨테이너가 다음에 시작될 때 적용됩니다. 바로 적용하려면 배포를 일시 중지했다가 다시 시작하세요.

스크립트 출력을 보려면 배포에서 "View Logs"를 선택한 다음 새 항목을 보려면 "Refresh"를 선택하세요. 대화상자에는 모든 복제본에서 지난 한 시간 동안의 최대 300개 항목이 표시되며, 항목이 나타나기까지 잠시 걸릴 수 있습니다. 스크립트가 출력하는 내용은 모두 여기에 표시되므로 인증 정보를 출력하지 마세요.

## 실패

모든 복제본이 시작 스크립트에 5번 연속 실패하면 배포가 일시 중지됩니다. 성공하면 해당 복제본의 횟수가 초기화됩니다. 이후 상태는 "Paused: Startup Script Failures"로 표시됩니다. 스크립트를 수정하거나 지운 다음 "Resume"을 선택하세요. 들어오는 요청은 배포를 다시 시작하지 않습니다.

배포를 만든 사람과 워크스페이스 소유자는 스크립트가 실패하기 시작하면 이메일을 한 번 받습니다. Roboflow는 배포가 복구되거나 스크립트를 변경하기 전까지 동일한 실패에 대해 추가 이메일을 보내지 않습니다.

## HTTP API

전용 배포 엔드포인트는 다음에서 호스팅됩니다. `https://roboflow.cloud`. 참고하세요 [전용 배포](/deployment/ko/roboflow-cloud/dedicated-deployments.md#http-api) 나머지는 다음을 참고하세요.

[배포 만들기](/deployment/ko/roboflow-cloud/dedicated-deployments.md#create-a-deployment) 는 선택적인 `startup_script` 문자열을 본문에 허용합니다. 이미 존재하는 배포의 스크립트를 변경하려면 다음으로 POST하세요. `/update_startup_script`.

<mark style="color:초록색;">`POST`</mark> `/update_startup_script`

<table data-search="false"><thead><tr><th width="200">이름</th><th width="120">유형</th><th>설명</th><th data-type="checkbox">필수</th></tr></thead><tbody><tr><td><code>api_key</code></td><td>문자열</td><td>워크스페이스 API 키.</td><td>true</td></tr><tr><td><code>deployment_name</code></td><td>문자열</td><td>업데이트할 배포.</td><td>true</td></tr><tr><td><code>startup_script</code></td><td>문자열</td><td>스크립트 내용. 스크립트를 제거하려면 빈 문자열을 보내세요.</td><td>true</td></tr></tbody></table>

```bash
curl -X POST "https://roboflow.cloud/update_startup_script" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "'$ROBOFLOW_API_KEY'",
    "deployment_name": "my-deployment",
    "startup_script": "#!/bin/bash\nset -e\napt-get update\n"
  }'
```
