なぜFly.ioはあなたが使っていない最高の無料Dockerホスティングなのか

Fred· Full-Stack Developer2 min read

プラットフォーム: Fly.io | 提供元: Fly.io | 無料ティア: 永久に毎月$5クレジット

誰も話さない秘密

Fly.ioを特別にしているのはこれです:毎月5ドルの無料クレジットを永久に提供しています。トライアルでも期間限定オファーでもありません。Dockerコンテナのための永久の無料ホスティングです。使用量が5ドル以下なら(ネタバレ:ほとんどのプロジェクトでは収まります)、一銭も払いません。

さらに良いことに、「無料」を謳う他のすべてのプラットフォームとは異なり、Fly.ioはDockerコンテナを本物のVMとして実行します。これは5分後にアプリがスリープするサーバーレスではありません。コンテナは24時間365日稼働し続け、リクエストに即座に応答します。

私は1年以上、Fly.ioで3つの本番APIを実行しています。総コストは?ゼロドル。その正確な方法をお伝えします。

無料で得られるもの

その月額5ドルのクレジットは本格的なインフラに換算されます:

256MB RAMの3つのVM、世界中のどこでも実行可能。1GBストレージのPostgreSQLデータベースを追加。160GBのアウトバウンド帯域幅を投入。これらすべてが無料枠内に余裕を持って収まります。

計算は簡単です:256MB VMが1つ約$1.94/月。3つと小さなデータベースでちょうど約5ドルになります。これらの制限内に収まる限り、Fly.ioの月額クレジットですべてがカバーされます。

5分で始められる

まず、Fly CLIをインストールします。Macでは1つのbrewコマンド。Linuxではインストールスクリプトをcurl。WindowsユーザーはPowerShell。全体で30秒かかります。

# macOS
brew install flyctl

# Linux
curl -L https://fly.io/install.sh | sh

# Windows
pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex"

メールだけでサインアップ。最終的にはカードを求められますが、最初のアプリはカードなしでデプロイできます:

flyctl auth signup

最初のデプロイ(驚くほど簡単)

ここでFly.ioが輝きます。Dockerfileがありますか?素晴らしい、動きます。ありませんか?Fly.ioが解決します。本気です。フレームワークを検出してすべてを自動的に生成します。

実際の例をお見せしましょう。先週デプロイしたNode.js APIです:

// index.js
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;

app.get('/', (req, res) => {
  res.json({
    message: 'This API runs 24/7 for free',
    timestamp: new Date().toISOString()
  });
});

app.get('/health', (req, res) => {
  res.json({ status: 'healthy' });
});

app.listen(port, '0.0.0.0', () => {
  console.log(`Running on port ${port}`);
});

これをデプロイするには、文字通りこれを実行しただけです:

flyctl launch

それだけです。FlyがNode.jsを検出し、Dockerfileを作成し、イメージをビルドし、グローバルにデプロイしました。全プロセスは約2分。APIは*.fly.dev URLでライブになり、自動HTTPSで、最寄りのデータセンターからリクエストに応答しています。

誰も言及しないDockerの利点

Fly.ioをVercel、Netlify、その他と区別するものがこれです:実際のDockerコンテナをデプロイしています。つまり、文字通り何でも実行できます。Pythonスクリプト、Goバイナリ、Rustサーバー、PHPアプリケーション、Ruby on Rails、何でも。

Webhookを処理するPython Flaskがあり、スケジュールされたタスクを実行するNode.jsボット、画像リサイズを処理するGoサービスがあります。すべて無料ティアで動作中。Vercelの趣味プランでそれをやってみてください。

コンテナはFirecracker microVMとして実行されます。AmazonがLambdaに使用しているのと同じ技術です。ミリ秒で起動しますが、本物のサーバーのように動作します。コールドスタートなし、10秒タイムアウトなし、サーバーレスの制限なし。あなたのコードが期待通りに動作するだけです。

256MBを活用する(思ったより簡単)

無料ティアはVMあたり256MBのRAMを提供します。何を考えているか分かります。それだけ?でも驚くかもしれません。軽量なExpress.js APIは約50MBを使用します。いくつかのエンドポイントを持つFlaskアプリは約80MBです。小さなRailsアプリでさえ、注意すれば200MBに収まります。

256MBで十分に動作するもの:

  • APIバックエンド(RESTまたはGraphQL)
  • Webhookプロセッサ
  • スケジュールされたジョブランナー
  • 動的機能を持つ静的サイト
  • Discord/Slackボット
  • SQLiteを使った小さなデータベース

動作しないもの:

  • Next.js(少なくとも512MB必要)
  • 大規模なDjangoアプリケーション
  • Java Spring Bootアプリ
  • 大きなデータセットをメモリにロードするもの

メモリ制限に達した場合、2つのオプションがあります。まず、コードを最適化する。ファイルをメモリにロードする代わりにストリーミングし、データベースクエリにページネーションを使用し、依存関係を遅延ロードする。ほとんどの「メモリ問題」は単に非効率なコードです。

2番目のオプション:512MBにスケールアップ。これで無料ティアをわずかに超え、月額約$2-3かかります。コーヒー1杯より安いし、はるかに便利です。

シンプルに動作するPostgreSQL

データベースの追加は驚くほど簡単です:

flyctl postgres create

プロンプトで「Development」設定を選択します。256MB RAMと1GBストレージのPostgreSQLインスタンスが得られ、小さなアプリに最適です。データベースはアプリと同じリージョンで実行され、最小レイテンシを実現します。

アプリに接続:

flyctl postgres attach <database-name>

これは自動的にDATABASE_URL環境変数を設定します。アプリはすぐに接続できます:

const { Pool } = require('pg');
const pool = new Pool({
  connectionString: process.env.DATABASE_URL
});

// That's it. You have a database.

500以上の投稿を持つブログ、1000以上のアカウントを持つユーザーシステム、50kイベントを追跡する分析ダッシュボードを実行しています。すべて無料ティアのデータベースで。次のTwitterを構築しているのでなければ、1GBで十分です。

何もせずにグローバル化

1つのコマンドで複数のリージョンにデプロイ:

flyctl regions add lhr  # London
flyctl regions add nrt  # Tokyo
flyctl regions add syd  # Sydney

Fly.ioは自動的にユーザーを最も近いインスタンスにルーティングします。ヨーロッパのユーザーはロンドンにヒットし、アジアのユーザーは東京にヒットし、すべてがただ動作します。設定なし、CDNセットアップなし、何もなし。

3つの無料VMで、真にグローバルなカバレッジのために各リージョンに1つずつ配置できます。または冗長性のためにすべてを1つのリージョンに保持できます。1つがクラッシュしても、他がリクエストを処理し続けます。

注意点(それほど多くない)

制限について正直に言いましょう。5ドルのクレジットは月から月へ繰り越されません。使うか失うかです。しかし正直なところ、3つの小さなVMを24時間365日実行するとフルクレジットを使います。

カスタムドメインなどの特定の機能をアンロックするため、また制限を超えた場合のサービス中断を防ぐために、最終的にはクレジットカードを追加する必要があります。しかしここがポイントです。Fly.ioは何かを請求する前にメールを送ります。テストサーバーをシャットダウンし忘れたからといって500ドルの驚きの請求書はありません。

256MB RAMの制限は本物です。非効率なコードを投げて奇跡を期待することはできません。しかしこの制約は、より良いコードを書くことを強制します。それは悪いことではありません。

Fly.io vs その他を使うべき時

スリープしない本物のサーバーが欲しい時はFly.ioを使ってください。API、Webhook、ボット、即座に応答する必要があるものに最適です。Dockerサポートにより、あらゆる言語やフレームワークを実行できます。

Next.jsサイトを構築して完璧な開発者体験が欲しい時はVercelを使ってください。彼らのプレビューデプロイメントは比類がありません。

コールドスタートなしで50以上のロケーションで実行する必要があるエッジ関数にはCloudflare Workersを使ってください。

より美しいUIが欲しく、初日から支払うことを気にしないならRailwayを使ってください。

しかし、無料で本物のアプリをオンラインにして、稼働し続けるなら?Fly.ioは毎回勝ちます。

デプロイする番です

読むのをやめて試してください。本当に、5分で済みます:

  1. CLIをインストール
  2. シンプルなアプリを作成(または既存のものを使用)
  3. flyctl launchを実行
  4. アプリがライブになるのを見る

それだけです。複雑な設定なし、yaml地獄なし、請求の驚きなし。本物のインフラで動作するあなたのコードだけです。

デプロイするものを構築する

Fly.ioに最初のアプリをデプロイする準備はできましたか?これらの実践的なチュートリアルで本物のプロジェクトを構築することから始めましょう:

各チュートリアルにはDocker設定とデプロイメント手順が含まれており、Fly.ioの無料ティアで開発から本番へプロジェクトを簡単に移行できます。

すでにFlaskアプリがありますか? FlaskアプリケーションをPostgreSQLでコンテナ化し、ダウンタイムなしのマイグレーションでFly.ioにデプロイするステップバイステップの手順については、**完全なDockerとFly.ioデプロイメントチュートリアル**をご覧ください。


技術詳細

プラットフォーム: Fly.io 月額クレジット: $5(3つのVM + データベースをカバー) デプロイメント: microVMとしてのDockerコンテナ リージョン: 世界中30以上 VMあたりRAM: 256MB(アップグレード可能) データベース: 1GBストレージのPostgreSQL 帯域幅: 月160GB含む

注:初期テスト後にクレジットカードの登録が必要ですが、月額使用量が$5以下なら請求されません。

Fred

Fred

AUTHOR

Full-stack developer with 10+ years building production applications. I've deployed applications to every major cloud platform and lived to tell the tale.

Need a developer who gets it?

POC builds, vibe-coded fixes, and real engineering. Let's talk.

Hire Me →