Skip to content

DigitalOcean は、アプリケーションの構築とデプロイのためのさまざまなサービスを提供するクラウドプラットフォームです。

このガイドでは、Dockerfile を使用して Bun HTTP サーバーを DigitalOcean にデプロイします。

NOTE

続行する前に、以下が準備されていることを確認してください。

新しい DigitalOcean Container Registry を作成する

Docker イメージを保存するための新しい Container Registry を作成します。

DigitalOcean ダッシュボードを通じて

DigitalOcean ダッシュボードで、Container Registry に移動し、新しいレジストリの詳細を入力します。

詳細が正しいことを確認し、Create Registry をクリックします。

DigitalOcean CLI を通じて
bash
doctl registry create bun-digitalocean-demo
txt
Name                     Endpoint                                           Region slug
bun-digitalocean-demo    registry.digitalocean.com/bun-digitalocean-demo    sfo2

DigitalOcean レジストリダッシュボード に新しいレジストリが表示されます。

新しい Dockerfile を作成する

プロジェクトディレクトリにいることを確認し、プロジェクトのルートに新しい Dockerfile を作成します。このファイルには、コンテナの初期化、ローカルプロジェクトファイルのコピー、依存関係のインストール、アプリケーションの起動に関する指示が含まれています。

docker
# アプリケーションを実行するために公式の 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 など、コンテナイメージから 除外 する必要があるファイルとディレクトリが含まれています。これにより、ビルドが高速化され、サイズが小さくなります。

docker
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# 除外するその他のファイルやディレクトリ

Docker を DigitalOcean レジストリで認証する

Docker イメージをビルドおよびプッシュする前に、Docker を DigitalOcean Container Registry で認証します。

bash
doctl registry login
txt
Successfully authenticated with registry.digitalocean.com

NOTE

このコマンドは、DigitalOcean の認証情報を使用して Docker を DigitalOcean のレジストリで認証します。このステップがないと、ビルドおよびプッシュコマンドは 401 認証エラーで失敗します。

Docker イメージをビルドして DigitalOcean レジストリにプッシュする

Dockerfile を含むディレクトリにいることを確認し、Docker イメージをビルドして DigitalOcean レジストリに 1 つのコマンドでプッシュします。

bash
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 ダッシュボードに表示されます。

Bun by www.bunjs.com.cn 編集