@jin7942/ray
Version:
Lightweight CI/CD deployment tool powered by Docker and Git
166 lines (116 loc) • 5.25 kB
Markdown
# RAY
[](https://www.npmjs.com/package/@jin7942/ray)
[](https://www.npmjs.com/package/@jin7942/ray)
[](./LICENSE)
**ver: 1.5.1**

**단순하고 가벼운 자동 배포 도구 RAY**
RAY는 GitHub 저장소를 클론하고, 빌드하고, Docker 이미지로 만들어 컨테이너를 무중단으로 교체하는 자동화 배포 도구입니다.
복잡한 설정 없이, 단 하나의 JSON 파일만으로도 전체 배포 파이프라인을 구성할 수 있습니다.
[README for english](./README.md)
## 주요 기능
- GitHub 저장소 클론
- Docker 이미지 생성 및 컨테이너 배포
- 기존 컨테이너 무중단 교체
- JSON 기반 설정 파일
- CLI 또는 라이브러리 방식 사용 가능
## 설치 방법
```bash
npm install -g @jin7942/ray
```
## 사용법
```bash
ray init # 기본 설정 파일 생성
ray init wizard # 설정 마법사 실행
ray run # 전체 프로젝트 실행
ray run <프로젝트명> # 특정 프로젝트만 실행
ray help # 도움말 출력
```
## 설정 파일 예시 (`ray.config.json`)
```jsonc
{
"projects": [
{
"name": "my-app",
"repo": "https://github.com/user/my-app.git",
"branch": "main",
"docker": {
//v1.5.0부터 docker-compose 지원
"type": "docker | compose",
"image": "my-app-image",
"containername": "my-app-container",
"path": {
"dockerfile": "./Dockerfile",
// type==compose 일 경우 경로 필요
"compose": "./docker-compose.yml"
},
// type==docker일 때만 사용됨
"network": ["net1", "net2"], // --network 옵션을 지원합니다.
"volumes": ["/host/path:/app/path", "/tmp/test:/app/test"] // 도커 컨테이너 볼륨 마운트 지원 추가
},
"internal": {
"logdir": "./logs",
"maxLogDirSize": 5242880,
"logLevel": "info",
"envFilePath": "./.env"
}
}
]
}
```
## 도커 파일 예시 (`Dockerfile`)
```docker
FROM node:22-alpine AS builder
WORKDIR /app
COPY . .
RUN apk update && apk upgrade
RUN npm install
RUN npm run build
FROM node:22-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/package.json .
COPY --from=builder /app/package-lock.json .
RUN apk add --no-cache git
RUN npm install --omit=dev
EXPOSE 7979
CMD ["node", "dist/server.js"]
```
### 도커파일 내에 빌드 로직을 반드시 포함하여야 합니다. RAY 1.2.0 버전부터는 더 이상 빌드 커맨드가 작동하지 않습니다.
## 라이브러리로 사용하기
```ts
import { loadProjectConfig, runRayPipeline } from '@jin7942/ray';
const config = await loadProjectConfig('my-app');
await runRayPipeline(config);
```
## API 명세
API에 대한 문서는 다음 링크를 참고 하십시오. [document](./DOCUMENT.md)
## 시스템 요구 사항
- Node.js 18 이상
- Git 설치
- Docker 설치 및 실행 중
## 구현 예제
서버에서 사용 예
### [RAY Auto Deploy Server](https://github.com/jin7942/ray-auto-deploy-server) — webhock 이벤트를 수신하여 자동배포를 수행하는 서버 입니다.
---
## 프로젝트 철학
Ray는 복잡한 설정 없이 누구나 자동배포를 경험할 수 있도록 설계된 경량형 CI/CD 도구입니다. 특히 배포 경험이 부족한 학생이나 초보 개발자도 쉽게 사용할 수 있도록, 설정은 최소화하고 사용성은 극대화했습니다.
## 릴리즈 히스토리
| 버전 | 날짜 | 설명 |
| ------ | ---------- | -------------------------------------------------------------- |
| v1.0.0 | 2025-04-09 | 첫 정식 릴리즈. 기본 기능 구현 완료 |
| v1.1.0 | 2025-04-10 | 환경변수 설정 지원 |
| v1.2.0 | 2025-04-11 | 컨테이너 외부 로그 저장 지원, Dockerfile 내 빌드 방식으로 전환 |
| v1.3.0 | 2025-04-12 | 이미지 빌드시 네트워크 지정 옵션 지원, Git clone 프로세스 개선 |
| v1.4.0 | 2025-04-12 | 도커 컨테이너 볼륨 마운트 지원 추가. |
| v1.5.0 | 2025-06-09 | 도커 컴포즈 지원 |
## 라이선스
본 프로젝트는 MIT 라이선스를 따릅니다.
## 기여
본 프로젝트는 오픈소스로 자유롭게 확장/수정이 가능합니다.
기여, 제안, 피드백은 언제든지 환영합니다.
- 이슈 등록: [GitHub Issues](https://github.com/jin7942/ray/issues)
- 풀 리퀘스트: 자유롭게 생성해주세요
## 프로젝트 링크
- GitHub 저장소: https://github.com/jin7942/ray
- 이슈 트래커: https://github.com/jin7942/ray/issues