> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ko/llms.txt # 배포자 Deployer는 Hono 프레임워크를 사용하여 코드를 패키징하고, 환경 파일을 관리하고, 애플리케이션을 제공함으로써 독립형 Mastra 애플리케이션의 배포를 처리합니다. 구체적인 구현에서는 특정 배포 대상에 대한 배포 방법을 정의해야 합니다. ## 사용예 사용자 지정 배포자를 만들려면 추상 `Deployer` 클래스를 확장하고 특정 배포 로직을 사용하는 `deploy` 메서드를 구현하면 됩니다. 예시는 다음과 같습니다. ```typescript import { Deployer } from '@mastra/deployer' class CustomDeployer extends Deployer { constructor() { super({ name: 'custom-deployer' }) } async deploy(outputDirectory: string): Promise { // Prepare the output directory await this.prepare(outputDirectory) // Bundle the application await this._bundle('server.ts', 'mastra.ts', outputDirectory) // Custom deployment logic } } ``` ## 매개변수 ### 생성자 매개변수 **args** (`object`): Deployer의 구성 옵션입니다. **args.name** (`string`): 배포자 인스턴스의 고유 이름입니다. ### 매개변수 배포 **outputDirectory** (`string`): 번들링되어 배포할 준비가 된 애플리케이션이 출력될 디렉터리입니다. ## 행동 양식 **getEnvFiles** (`() => Promise`): 배포 중 사용할 환경 파일 목록을 반환합니다. 기본적으로 '.env.production' 및 '.env' 파일을 찾습니다. **deploy** (`(outputDirectory: string) => Promise`): 하위 클래스에서 반드시 구현해야 하는 추상 메서드입니다. 지정된 출력 디렉터리로의 배포 프로세스를 처리합니다. ## 번들러에서 상속된 메서드 Deployer 클래스는 Bundler 클래스에서 다음 주요 메서드를 상속합니다. **prepare** (`(outputDirectory: string) => Promise`): 출력 디렉터리를 정리하고 필요한 하위 디렉터리를 생성하여 준비합니다. **writePackageJson** (`(outputDirectory: string, dependencies: Map) => Promise`): 지정된 종속성을 포함하는 package.json 파일을 출력 디렉터리에 생성합니다. **\_bundle** (`(serverFile: string, mastraEntryFile: string, outputDirectory: string, bundleLocation?: string) => Promise`): 지정된 서버 파일과 Mastra 진입점 파일을 사용하여 애플리케이션을 번들링합니다. ## 핵심 개념 ### 배포 수명주기 Deployer 추상 클래스는 구조화된 배포 수명 주기를 구현합니다. 1. **초기화**: 배포자는 이름으로 초기화되고 종속성 관리를 위한 Deps 인스턴스를 생성합니다. 2. **환경 구성**: `getEnvFiles` 메서드는 배포 중 사용할 환경 파일(.env.production, .env)을 식별합니다. 3. **준비**: `prepare` 메서드(Bundler에서 상속됨)는 출력 디렉터리를 정리하고 필요한 하위 디렉터리를 생성합니다. 4. **번들링**: `_bundle` 메서드(Bundler에서 상속됨)는 애플리케이션 코드와 그 종속성을 패키징합니다. 5. **배포**: 추상 `deploy` 메서드는 실제 배포 프로세스를 처리하도록 하위 클래스에서 구현합니다. ### 환경 파일 관리 Deployer 클래스에는 `getEnvFiles` 메서드를 통한 환경 파일 관리 지원이 내장되어 있습니다. 이 메서드는 다음을 수행합니다. - 사전 정의된 순서(.env.production, .env)로 환경 파일을 찾습니다. - FileService를 사용하여 첫 번째 기존 파일을 찾습니다. - 발견된 환경 파일의 배열을 반환합니다. - 환경 파일이 없으면 빈 배열을 반환합니다. ```typescript getEnvFiles(): Promise { const possibleFiles = ['.env.production', '.env.local', '.env']; try { const fileService = new FileService(); const envFile = fileService.getFirstExistingFile(possibleFiles); return Promise.resolve([envFile]); } catch {} return Promise.resolve([]); } ``` ### 번들링 및 배포 관계 Deployer 클래스는 Bundler 클래스를 확장하여 번들링과 배포 간의 명확한 관계를 설정합니다. 1. **전제 조건인 번들링**: 번들링은 애플리케이션 코드를 배포 가능한 형식으로 패키징하는 배포의 필수 단계입니다. 2. **공유 인프라**: 번들링과 배포 모두 종속성 관리 및 파일 시스템 작업과 같은 공통 인프라를 공유합니다. 3. **특화된 배포 로직**: 번들링은 코드 패키징에 중점을 두는 반면, 배포는 번들된 코드를 배포하기 위한 환경별 로직을 추가합니다. 4. **확장성**: 추상 `deploy` 메서드를 사용하면 서로 다른 대상 환경에 특화된 배포자를 만들 수 있습니다.