料金ブログ
言語
Helipackエンジン

Dockerfile 書かずに済む。

Helipackは、Helipod独自のビルドエンジンです。リポジトリからフレームワークを検出し、マルチステージビルド、ビルドシークレット、セキュリティのベストプラクティスを備えた、本番運用向けのDockerfileを生成します。

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 secretsによって、イメージレイヤーに保存されません。

標準のセキュリティ対策

非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 secrets(環境変数はレイヤーに保存されません)、非rootユーザー、グレースフルシャットダウンのためのtini initプロセスを使用しています。

試してみませんか?

GoogleまたはGitHubでログインし、リポジトリを接続して、Rupiah残高から支払います。クレジットカードは不要です。
WhatsApp