콘텐츠로 이동

원격 배포 (llamon deploy)

llamon deploy는 아래를 한 번에 수행합니다.

  1. 프로젝트를 tar.gz로 패키징
  2. scp로 원격 서버 전송
  3. 원격 경로에 압축 해제
  4. docker compose up 실행
항목비고
Compose 파일docker-compose.local.yml--compose-file로 변경 가능
DockerfileDockerfile.localcompose가 참조 (compose 파일 안 dockerfile: 키)
빌드 모드wheelhouse 우선, 없으면 온라인 PyPIDockerfile.local 동작
Postgres 등 사이드카compose 파일 그대로 함께 기동메모리 모드에 따라

폐쇄망용 Dockerfile(prepare-offline이 갱신하는 production 파일)은 llamon deploy가 사용하지 않습니다. compose 없이 docker build + docker run으로 실행되는 구조입니다.

흐름사용 파일compose빌드 모드
llamon run (로컬)Dockerfile.localdocker-compose.local.ymlwheelhouse 우선, 없으면 온라인
llamon deploy (원격 SSH)Dockerfile.localdocker-compose.local.yml (원격에서 실행)동일
prepare-offline 산출물 (폐쇄망)Dockerfile사용 안 함wheelhouse / 내부 PyPI / nexus

Terminal window
uv run llamon deploy ./my-agent --target ubuntu@<원격주소>

기본 원격 경로는 /opt/<agent-name>입니다.


Terminal window
# 원격 경로 지정
uv run llamon deploy ./my-agent \
--target ubuntu@<원격주소> \
--remote-dir /srv/llamon/my-agent
Terminal window
# 기존 아카이브 재사용
uv run llamon deploy ./my-agent \
--target ubuntu@<원격주소> \
--artifact ./dist/my-agent.tar.gz
Terminal window
# SSH 키/포트 지정
uv run llamon deploy ./my-agent \
--target ubuntu@<원격주소> \
--identity-file ~/.ssh/prod.pem \
--port 2222
Terminal window
# 전송/압축해제만 수행
uv run llamon deploy ./my-agent --target ubuntu@<원격주소> --no-up
Terminal window
# 예정 명령 확인
uv run llamon deploy ./my-agent --target ubuntu@<원격주소> --dry-run
uv run llamon deploy ./my-agent --target ubuntu@<원격주소> --dry-run --format json

  • 로컬: ssh, scp, uv
  • 원격 서버: docker, docker compose, bash, tar
  • 프로젝트 디렉토리에 main.py, docker-compose.local.yml 존재

원격 서버가 인터넷(PyPI)에 접근할 수 없다면, 전송 전에 wheelhouse를 미리 준비하세요. 그러면 Dockerfile.local 빌드가 온라인 PyPI 대신 wheelhouse를 사용합니다.

Terminal window
uv run llamon vendor-deps ./my-agent # <source>/wheelhouse 생성

플래그설명
--targetSSH 대상 (user@host)
--remote-dir원격 배포 디렉토리
--artifact기존 tar.gz 아카이브 사용
--archive-output자동 생성 아카이브 경로
--keep-archive자동 생성 아카이브를 로컬에 유지
--identity-fileSSH 개인키 경로
--portSSH 포트
--compose-file원격 compose 파일명
--no-up전송/압축해제만 수행
--no-builddocker compose up--build 생략
--dry-run실제 실행 없이 예정 명령 출력
--format text|jsondry-run 출력 형식