요금블로그
언어
Helipack 엔진

Dockerfile 직접 작성 없이.

Helipack은 리포지토리에서 프레임워크를 감지해 멀티 스테이지 빌드, 빌드 시크릿, 보안 모범 사례가 적용된 프로덕션 수준의 Dockerfile을 생성하는 Helipod의 내부 빌드 엔진입니다.

Helipack 엔진데모
1
2
3
4
런타임 감지
composer.json
artisan
package.json
yarn.lock
Dockerfile (자동 생성)
FROM dunglas/frankenphp:latest-php8.3-alpine AS base
WORKDIR /app
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
 
FROM base AS deps
COPY composer.json composer.lock ./
RUN composer install --no-dev --prefer-dist
 
FROM base AS runner
COPY . .
COPY --from=deps /app/vendor ./vendor
RUN composer dump-autoload --optimize
 
RUN --mount=type=secret,id=build_env \
php artisan config:cache && php artisan route:cache
 
EXPOSE 8000
CMD ["frankenphp", "run"]

중요한 이유

얻을 수 있는 것

런타임 감지

Helipack은 리포지토리를 스캔해 설정 파일, 의존성, 프로젝트 구조에서 프레임워크를 감지합니다.

멀티 스테이지 빌드

생성된 Dockerfile은 멀티 스테이지 빌드를 사용해 프로덕션 이미지 크기를 최소화합니다.

빌드 시크릿

빌드 중에 사용한 환경 변수는 BuildKit 시크릿 덕분에 이미지 레이어에 저장되지 않습니다.

기본 보안

non-root 사용자, tini init 프로세스, 최적화된 레이어 캐싱이 모두 자동으로 설정됩니다.

프레임워크 맞춤

Laravel 8.2+에는 FrankenPHP, Next.js에는 standalone 모드, Python에는 gunicorn 등 프레임워크별로 최적화됩니다.

최적의 캐시

레이어는 변경 빈도에 따라 구성됩니다. 의존성은 자주 바뀌지 않고 소스 코드는 자주 바뀌므로 빌드가 빨라집니다.

단계

작동 방식

  1. 01

    리포지토리 연결

    GitHub/GitLab 리포지토리를 연결하세요. Helipack이 리포지토리의 파일을 스캔하기 시작합니다.

  2. 02

    프레임워크 감지

    Helipack이 composer.json, package.json, requirements.txt, 설정 파일을 읽어 프레임워크를 감지합니다.

  3. 03

    Dockerfile 생성

    보안 모범 사례가 적용된 최적의 멀티 스테이지 Dockerfile이 자동으로 생성됩니다.

  4. 04

    빌드 및 배포

    Docker 이미지를 최적의 캐시로 빌드한 뒤 프로덕션에 배포합니다.

FAQ

자주 묻는 질문

Helipack은 어떤 프레임워크를 지원하나요?
Helipack은 Node.js(Next.js, Nuxt, Remix, Astro, Express, NestJS), PHP(Laravel, Symfony), Python(Django, FastAPI, Flask), Go(Gin, Echo)를 지원합니다. 다른 언어(Rust, Ruby, Java)는 직접 만든 Dockerfile을 사용하세요.
생성된 Dockerfile은 어떻게 확인하나요?
배포할 때 Build Logs에서 확인하세요. 로컬 개발에서는 빌드 전에 HELIPACK_KEEP_DOCKERFILE=1을 설정하면 Helipack이 파일을 .helipack.Dockerfile로 저장합니다.
Helipack 설정은 어떻게 재정의하나요?
리포지토리 루트에 helipack.json 파일을 만들어 빌드 명령어, 시작 명령어, 포트, 헬스 체크, 패키지 등을 재정의하세요. 전체 가이드는 블로그에서 확인하세요.
Helipack은 프로덕션에서 안전한가요?
네. 모든 Dockerfile은 BuildKit 시크릿(환경 변수가 레이어에 저장되지 않음), non-root 사용자, 정상 종료를 위한 tini init 프로세스를 사용합니다.

체험할 준비가 되셨나요?

Google 또는 GitHub로 로그인하고, 리포지토리를 연결한 뒤, Rupiah 잔액으로 결제하세요. 신용카드는 필요 없습니다.
WhatsApp