DigitalOcean は、アプリケーションの構築とデプロイのためのさまざまなサービスを提供するクラウドプラットフォームです。
このガイドでは、Dockerfile を使用して Bun HTTP サーバーを DigitalOcean にデプロイします。
NOTE
続行する前に、以下が準備されていることを確認してください。- デプロイ準備が整った Bun アプリケーション
- DigitalOcean アカウント
- インストールおよび設定済みの DigitalOcean CLI
- インストール済みで
PATHに追加された Docker
新しい DigitalOcean Container Registry を作成する
Docker イメージを保存するための新しい Container Registry を作成します。
DigitalOcean ダッシュボードを通じて
DigitalOcean ダッシュボードで、Container Registry に移動し、新しいレジストリの詳細を入力します。
詳細が正しいことを確認し、Create Registry をクリックします。
DigitalOcean CLI を通じて
doctl registry create bun-digitalocean-demoName Endpoint Region slug
bun-digitalocean-demo registry.digitalocean.com/bun-digitalocean-demo sfo2DigitalOcean レジストリダッシュボード に新しいレジストリが表示されます。
新しい Dockerfile を作成する
プロジェクトディレクトリにいることを確認し、プロジェクトのルートに新しい Dockerfile を作成します。このファイルには、コンテナの初期化、ローカルプロジェクトファイルのコピー、依存関係のインストール、アプリケーションの起動に関する指示が含まれています。
# アプリケーションを実行するために公式の Bun イメージを使用
FROM oven/bun:debian
# 作業ディレクトリを `/app` に設定
WORKDIR /app
# package.json と bun.lock をコンテナにコピー
COPY package.json bun.lock ./
# 依存関係をインストール
RUN bun install --production --frozen-lockfile
# アプリケーションの残りをコンテナにコピー
COPY . .
# ポートを公開(DigitalOcean が PORT 環境変数を設定します)
EXPOSE 8080
# アプリケーションを実行
CMD ["bun", "index.ts"]NOTE
スタートコマンドがアプリケーションのエントリポイントに対応していることを確認してください。`package.json` にスタートスクリプトがある場合は、`CMD ["bun", "run", "start"]` にすることもできます。このイメージは依存関係をインストールし、コンテナ内で Bun を使用してアプリを実行します。アプリに依存関係がない場合は、RUN bun install --production --frozen-lockfile 行を省略できます。
プロジェクトのルートに新しい .dockerignore ファイルを作成します。このファイルには、node_modules など、コンテナイメージから 除外 する必要があるファイルとディレクトリが含まれています。これにより、ビルドが高速化され、サイズが小さくなります。
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# 除外するその他のファイルやディレクトリDocker を DigitalOcean レジストリで認証する
Docker イメージをビルドおよびプッシュする前に、Docker を DigitalOcean Container Registry で認証します。
doctl registry loginSuccessfully authenticated with registry.digitalocean.comNOTE
このコマンドは、DigitalOcean の認証情報を使用して Docker を DigitalOcean のレジストリで認証します。このステップがないと、ビルドおよびプッシュコマンドは 401 認証エラーで失敗します。Docker イメージをビルドして DigitalOcean レジストリにプッシュする
Dockerfile を含むディレクトリにいることを確認し、Docker イメージをビルドして DigitalOcean レジストリに 1 つのコマンドでプッシュします。
docker buildx build --platform=linux/amd64 -t registry.digitalocean.com/bun-digitalocean-demo/bun-digitalocean-demo:latest --push .NOTE
ARM Mac(M1/M2)でビルドしている場合は、DigitalOcean のインフラとの互換性を確保するために `--platform=linux/amd64` で `docker buildx` を使用する必要があります。プラットフォームフラグなしで `docker build` を使用すると、DigitalOcean で実行できない ARM64 イメージが作成されます。イメージがプッシュされると、DigitalOcean レジストリダッシュボード に表示されます。
新しい DigitalOcean App Platform プロジェクトを作成する
DigitalOcean ダッシュボードで、App Platform > Create App に移動します。コンテナイメージから直接プロジェクトを作成できます。
詳細が正しいことを確認し、Next をクリックします。
リソース設定を確認して設定し、Create app をクリックします。
ライブアプリケーションにアクセスする
🥳 アプリが稼働しました!アプリが作成されると、パブリック URL とともに App Platform ダッシュボードに表示されます。