배포자
Deployer는 Hono 프레임워크를 사용하여 코드를 패키징하고, 환경 파일을 관리하고, 애플리케이션을 제공함으로써 독립형 Mastra 애플리케이션의 배포를 처리합니다. 구체적인 구현에서는 특정 배포 대상에 대한 배포 방법을 정의해야 합니다.
사용예사용예에 대한 직접 링크
사용자 지정 배포자를 만들려면 추상 Deployer 클래스를 확장하고 특정 배포 로직을 사용하는 deploy 메서드를 구현하면 됩니다. 예시는 다음과 같습니다.
import { Deployer } from '@mastra/deployer'
class CustomDeployer extends Deployer {
constructor() {
super({ name: 'custom-deployer' })
}
async deploy(outputDirectory: string): Promise<void> {
// 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<string[]>
배포 중 사용할 환경 파일 목록을 반환합니다. 기본적으로 '.env.production' 및 '.env' 파일을 찾습니다.
deploy:
(outputDirectory: string) => Promise<void>
하위 클래스에서 반드시 구현해야 하는 추상 메서드입니다. 지정된 출력 디렉터리로의 배포 프로세스를 처리합니다.
번들러에서 상속된 메서드번들러에서 상속된 메서드에 대한 직접 링크
Deployer 클래스는 Bundler 클래스에서 다음 주요 메서드를 상속합니다.
prepare:
(outputDirectory: string) => Promise<void>
출력 디렉터리를 정리하고 필요한 하위 디렉터리를 생성하여 준비합니다.
writePackageJson:
(outputDirectory: string, dependencies: Map<string, string>) => Promise<void>
지정된 종속성을 포함하는 package.json 파일을 출력 디렉터리에 생성합니다.
_bundle:
(serverFile: string, mastraEntryFile: string, outputDirectory: string, bundleLocation?: string) => Promise<void>
지정된 서버 파일과 Mastra 진입점 파일을 사용하여 애플리케이션을 번들링합니다.
핵심 개념핵심 개념에 대한 직접 링크
배포 수명주기배포 수명주기에 대한 직접 링크
Deployer 추상 클래스는 구조화된 배포 수명 주기를 구현합니다.
- 초기화: 배포자는 이름으로 초기화되고 종속성 관리를 위한 Deps 인스턴스를 생성합니다.
- 환경 구성:
getEnvFiles메서드는 배포 중 사용할 환경 파일(.env.production, .env)을 식별합니다. - 준비:
prepare메서드(Bundler에서 상속됨)는 출력 디렉터리를 정리하고 필요한 하위 디렉터리를 생성합니다. - 번들링:
_bundle메서드(Bundler에서 상속됨)는 애플리케이션 코드와 그 종속성을 패키징합니다. - 배포: 추상
deploy메서드는 실제 배포 프로세스를 처리하도록 하위 클래스에서 구현합니다.
환경 파일 관리환경 파일 관리에 대한 직접 링크
Deployer 클래스에는 getEnvFiles 메서드를 통한 환경 파일 관리 지원이 내장되어 있습니다. 이 메서드는 다음을 수행합니다.
- 사전 정의된 순서(.env.production, .env)로 환경 파일을 찾습니다.
- FileService를 사용하여 첫 번째 기존 파일을 찾습니다.
- 발견된 환경 파일의 배열을 반환합니다.
- 환경 파일이 없으면 빈 배열을 반환합니다.
getEnvFiles(): Promise<string[]> {
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 클래스를 확장하여 번들링과 배포 간의 명확한 관계를 설정합니다.
- 전제 조건인 번들링: 번들링은 애플리케이션 코드를 배포 가능한 형식으로 패키징하는 배포의 필수 단계입니다.
- 공유 인프라: 번들링과 배포 모두 종속성 관리 및 파일 시스템 작업과 같은 공통 인프라를 공유합니다.
- 특화된 배포 로직: 번들링은 코드 패키징에 중점을 두는 반면, 배포는 번들된 코드를 배포하기 위한 환경별 로직을 추가합니다.
- 확장성: 추상
deploy메서드를 사용하면 서로 다른 대상 환경에 특화된 배포자를 만들 수 있습니다.