Container Dockerfile 템플릿 관리 레포지토리
이 레포지토리는 LaunchPad 플랫폼에서 사용하는 Container Dockerfile 템플릿을 관리합니다.
템플릿 변경 시 자동으로 운영 데이터베이스에 마이그레이션을 적용하며, Git diff 기반으로 변경된 템플릿만 업데이트합니다.
container-go-template/
├── templates/ # 템플릿 디렉토리
│ ├── vuejs/
│ │ ├── template.tmpl # Dockerfile 템플릿 (Go template 문법)
│ │ ├── config.json # 템플릿 옵션, 포트, 환경변수
│ │ └── metadata.json # 이름, 설명, 카테고리, 버전
│ ├── react/
│ ├── nextjs/
│ └── ... # 23개 프레임워크 템플릿
├── scripts/
│ └── generate-migration.go # 마이그레이션 SQL 생성 도구
└── .github/workflows/
├── ci.yml # PR 검증
└── cd.yml # 운영 배포
- Vue.js
- React
- Next.js
- Angular
- Svelte
- Static HTML
- Express.js
- NestJS
- Go Gin
- Spring Boot
- Kotlin Spring Boot
- FastAPI
- Flask
- Django
- Laravel
- Ruby on Rails
- Rust
- .NET Core
- Fiber
- MySQL
- PostgreSQL
- MongoDB
- Redis
git checkout -b feat/update-vue-templatecd templates/vuejs
# template.tmpl, config.json, metadata.json 수정- PR 생성 시 CI가 자동으로 실행됩니다
- 변경된 템플릿 검증
- 마이그레이션 SQL 미리보기
- main 브랜치 머지 시 CD가 자동 실행
- 운영 MySQL에 직접 마이그레이션 적용
- 변경된 템플릿만 deprecated → active 처리
모든 템플릿:
cd scripts
go run generate-migration.go --all --output /tmp/test.sql --version test
cat /tmp/test.sql특정 템플릿만:
go run generate-migration.go \
--changed '["../templates/vuejs","../templates/react"]' \
--output /tmp/test.sql \
--version test검증만 (SQL 생성 안 함):
go run generate-migration.go --all --validate-onlyDockerfile 템플릿 파일 (Go template 문법 사용)
FROM node:{{ .node_version }}-alpine
{{ if eq .package_manager "npm" }}
RUN npm ci
{{ else }}
RUN yarn install
{{ end }}
...템플릿 기본 정보
{
"name": "Vue.js",
"description": "Vue.js 기반 SPA 애플리케이션",
"categories": ["frontend"],
"display_order": 1,
"icon_name": "vue",
"requires_git": true,
"version": "1.0"
}템플릿 설정 (옵션, 포트, 환경변수)
{
"template_options": [
{
"name": "node_version",
"label": "Node.js 버전",
"type": "select",
"options": ["18", "20", "22"],
"default": "20"
}
],
"template_ports": [
{
"internal_port": 80,
"network_type": "http",
"description": "HTTP port"
}
],
"default_ports": [...],
"default_env": [...]
}- 변경된 템플릿 감지 (Git diff)
- 템플릿 검증
- 마이그레이션 SQL 생성 테스트
- PR 코멘트에 미리보기 추가
- 변경된 템플릿 감지
- 마이그레이션 SQL 생성
- SSH로 운영 서버 접속
- MySQL에 직접 마이그레이션 적용
- 검증 (deprecated/active 상태 확인)
DB 초기화 후 전체 템플릿을 수동으로 배포할 수 있습니다:
- GitHub Actions → CD 워크플로우 이동
- "Run workflow" 버튼 클릭
- "Force deploy all templates" 체크박스 선택
- Run 실행
- 23개 전체 템플릿이 운영 DB에 삽입됨
사용 시나리오:
- 운영 환경 DB 초기화 후 전체 템플릿 재배포
- 새로운 환경 구축 시 전체 템플릿 일괄 삽입
- 변경된 템플릿만 업데이트: 불필요한 template_id 증가 방지
- Deprecated 방식: 기존 컨테이너는 이전 템플릿 계속 사용 가능
- CI 검증 필수: PR 승인 없이는 배포 불가
- 투명한 이력: GitHub에서 모든 변경 추적 가능
template_id INT UNSIGNED AUTO_INCREMENT
name VARCHAR(255) -- 템플릿 이름
template_body LONGTEXT -- Dockerfile 템플릿
template_config JSON -- 메타데이터 + 설정
status ENUM('active', 'inactive', 'deprecated')
created_at TIMESTAMP
updated_at TIMESTAMP- UPDATE: 기존 템플릿
status = 'deprecated' - INSERT: 새 버전 템플릿
status = 'active' - 기존 컨테이너는
deprecated템플릿 계속 사용 - 신규 컨테이너는
active템플릿만 선택 가능
- web-console-backend - LaunchPad Backend API
- web-console-frontend - LaunchPad Frontend