릴리즈 페이지에서 .run 파일을 다운로드한다.
| 파일 | 설명 |
|---|---|
git_image_webbuilder_1.0.0.run |
Self-extracting 인스톨러 |
chmod +x git_image_webbuilder_1.0.0.run
sudo ./git_image_webbuilder_1.0.0.run
대화형 설치가 시작된다.
Step 1/7: 시스템 환경 확인
OS, 아키텍처, 패키지 매니저 자동 감지
Step 2/7: 네트워크 환경
인터넷 연결 자동 감지 후 사용자 선택
1) 온라인 — 누락 패키지를 자동 다운로드/설치
2) 폐쇄망 — 누락 항목의 설치 가이드만 출력
Step 3/7: 필수 바이너리 확인
python3, pip3, git, docker, kubectl 존재 확인
이미 설치된 항목은 skip, 누락 항목만 처리
Step 4/7: 설치 설정
설치 경로, 리슨 포트, 리슨 주소, systemd 등록
Step 5/7: 설치 확인
설정 요약 표시 후 확인
Step 6/7: 설치 실행
파일 복사 → pip 라이브러리 확인/설치 → 설정 파일 생성
Step 7/7: 서비스 등록
systemd 유닛 등록 → 서비스 시작
http://<서버IP>:8888
앱 자체 인증은 없다. 타겟(Registry, Git Server) 연결 시에만 인증 정보를 사용한다.
systemd 등록 시:
systemctl start image-builder
systemctl stop image-builder
systemctl restart image-builder
systemctl status image-builder
journalctl -u image-builder -f
수동 실행:
/opt/image_builder/bin/run.sh start
/opt/image_builder/bin/run.sh stop
/opt/image_builder/bin/run.sh restart
/opt/image_builder/bin/run.sh status
sudo ./git_image_webbuilder_1.0.0.run uninstall
서비스 중지 → systemd 유닛 삭제 → 설치 디렉토리 삭제.
Docker/Kubernetes 환경에서는 인스톨러 없이 직접 실행 가능하다.
docker-compose up -d
| 항목 | 값 |
|---|---|
| 외부 포트 | 1800 |
| 내부 포트 | 8888 |
| 데이터 | /data (volume) |
| Docker socket | /var/run/docker.sock (mount) |
폐쇄망 선택 시 누락 항목별로 다운로드/설치 명령을 안내한다.
시스템 패키지 (인터넷 서버에서 실행):
# Python3 + pip3
sudo dnf install --downloadonly --downloaddir=./py3_pkgs python3 python3-pip
# git
sudo dnf install --downloadonly --downloaddir=./git_pkgs git
# Docker
sudo dnf install --downloadonly --downloaddir=./docker_pkgs \
docker-ce docker-ce-cli containerd.io
전송 후 설치 (대상 서버):
sudo rpm -ivh --force ./py3_pkgs/*.rpm
sudo rpm -ivh --force ./git_pkgs/*.rpm
sudo rpm -ivh --force ./docker_pkgs/*.rpm
sudo systemctl enable --now docker
kubectl:
# 다운로드
curl -fsSL https://dl.k8s.io/release/v1.35.3/bin/linux/amd64/kubectl -o kubectl
# 설치
sudo cp kubectl /usr/local/bin/kubectl && sudo chmod +x /usr/local/bin/kubectl
Python 라이브러리:
# 다운로드 (인터넷 서버)
pip3 download -d ./wheels -r requirements.txt
# 설치 (대상 서버)
sudo pip3 install --no-index --find-links=./wheels -r /opt/image_builder/requirements.txt
Harbor의 경우 Docker Registry v2 Bearer token flow를 자동 수행한다:
/v2/ 요청 → 401 + Www-Authenticate 헤더 파싱Registry 등록 후 Project(namespace)를 추가한다.
예: library, my-project
앱 등록 시 이 목록에서 Project를 선택하거나 직접 입력할 수 있다.
이미지 경로 구조: registry_host/project/image_name:tag
등록 시 API verify + SSH verify를 모두 수행한다.
| 항목 | 용도 |
|---|---|
| API URL + Token | 저장소/브랜치 조회, Dockerfile 확인 |
| SSH Host + Key | Git clone (빌드 시) |
Auto 모드에서는 SSH verify 성공 시 SSH clone, 실패 시 HTTP clone으로 fallback한다.
| 항목 | 설명 |
|---|---|
| App Name | 고유 식별자 (영문, 숫자, -, _, .) |
| Git Server | 등록된 Git Server 선택 |
| Repository | 저장소 (필터링 드롭다운) |
| Registry | 등록된 Registry 선택 |
| Project | Registry 내 프로젝트 |
| Image Name | 이미지명 (기본: 앱 이름) |
| Dockerfile | Dockerfile 경로 (기본: Dockerfile) |
| Context | 빌드 컨텍스트 (기본: .) |
| Rollout Commands | 롤아웃 대상 워크로드 (여러 개 가능) |
앱 등록 시 롤아웃 대상 워크로드를 등록한다.
| 필드 | 설명 |
|---|---|
| Label | 식별용 이름 (staging, production 등) |
| NS | Kubernetes 네임스페이스 |
| Type | Deployment 또는 StatefulSet |
| Name | 워크로드 이름 |
| Auto | 체크 시 빌드 성공 후 자동 롤아웃 |
자동 태그 규칙:
| 브랜치 | 생성 태그 |
|---|---|
| main/master | branch-YYMMDD-HHMM, latest |
| 기타 | branch-YYMMDD-HHMM, branch |
| 커스텀 입력 | 입력값만 사용 |
빌드 파이프라인:
clone → Dockerfile 확인 → docker login → docker build → docker push → (auto rollout)
각 단계에서 취소 가능 ([Cancel Build] 버튼).
빌드 진행 중 2초마다 폴링하여 로그를 실시간 표시한다.
각 step 완료 시 즉시 로그에 추가 (종료 후 일괄 출력이 아님).
다른 브라우저/세션에서도 진행 중인 빌드를 확인할 수 있다.
전체 시스템에서 동시에 하나의 작업(빌드/롤아웃/스크립트)만 실행 가능하다.
빌드 시 clone 방법 결정 순서:
clone_method=ssh: SSH만 시도clone_method=http: HTTP만 시도clone_method=auto:
ssh_verified=true → SSH 시도ssh_verified=false → HTTP 직접 사용빌드 패널 하단의 Rollout Commands에서 [Rollout] 클릭.
확인 모달 후 실행된다.
빌드 시 [Auto Rollout] 체크 → 빌드 성공 후 auto=true인 롤아웃 커맨드 자동 실행.
롤아웃 실행 후 최대 5분(300초) 동안 10초 간격으로 pod 상태를 확인한다.
| 조건 | 동작 |
|---|---|
| 모든 pod Running + Ready | 즉시 성공 종료 |
| CrashLoopBackOff, ImagePullBackOff, ErrImagePull 등 | 즉시 실패 종료 |
| restartCount >= 5 | 에러 판단 |
| 5분 초과 | timeout 종료 |
매 체크마다 ready/desired 수치와 pod 목록을 로그에 출력한다.
롤아웃 없이 현재 상태만 확인하려면 [Status] 버튼 클릭.
워크로드 정보 + pod 목록을 표시한다.
등록 없이 즉석 실행:
| 방식 | 설명 |
|---|---|
| Script Path | 서버의 스크립트 파일 경로 |
| Paste Script | 스크립트 내용 직접 입력 |
sudo 옵션, SSH 모드 지원.
Running Scripts 패널에서 현재 실행 중인 스크립트를 확인하고 취소할 수 있다.
Builder 탭 하단과 History 탭에서 빌드/롤아웃 이력을 확인한다.
| 필드 | 설명 |
|---|---|
| Time | 실행 시각 |
| App | 앱 이름 |
| Branch | 브랜치 |
| Commit | 커밋 SHA (12자리) |
| Image | 푸시된 이미지 경로 |
| Status | success, build_failed, push_failed, cancelled, rollout_ok 등 |
| Steps | 각 step 결과 |
Scripts 탭 하단에서 스크립트 실행 이력을 확인한다.
conf/env 파일 또는 환경변수로 설정한다.
| 변수 | 기본값 | 설명 |
|---|---|---|
| BUILDER_DATA_DIR | /opt/image_builder/data | 데이터 경로 |
| BUILDER_HOST | 0.0.0.0 | 바인드 주소 |
| BUILDER_PORT | 8888 | 리슨 포트 |
| BUILD_TIMEOUT | 600 | 빌드 타임아웃 (초) |
| CMD_TIMEOUT | 30 | 명령 타임아웃 (초) |
| 바이너리 | 필수 | 용도 | 비고 |
|---|---|---|---|
| python3 | 필수 | 앱 실행 | 3.9 이상 |
| pip3 | 필수 | 라이브러리 설치 | flask, gunicorn, httpx |
| docker | 필수 | 이미지 빌드/푸시 | docker.sock 접근 필요 |
| git | 필수 | 소스 clone | SSH/HTTP |
| kubectl | 선택 | K8s 롤아웃 | 없으면 빌드/푸시만 가능 |
인스톨러가 각 바이너리의 존재 여부를 확인하고, 없는 항목만 설치(온라인) 또는 가이드(폐쇄망)를 제공한다.
Unsimple Image builder web © 2026 TheKnowledges.net — 출처 표기 하에 자유롭게 이용 및 배포 가능.