この記事では、カスタムメイドのAPIを作成して本番環境にデプロイするdockerの楽しくて便利なユースケースを示します。 私たちの場合、それはテレビ番組「ゲーム・オブ・スローンズ」のエピソードについての情報を提供します。 Dockerの他に、スタックには次のものが含まれます。
API について
APIは、エピソードに関する情報とそれらに関するコメントを提供します。 これらのコメントを投稿、削除、編集するためのエンドポイントもあります。 ドキュメントには、 こちらからアクセスできます。 また、その生の.jsonは バージョンは、リンクがアップしなくなった場合に備えて、リポジトリにあります。
テラフォームについて
これはプロジェクトのオプション部分ですが、クラウドサービスの作成と管理のプロセスを簡単に自動化できることを示すため、強くお勧めします。 ここでは、これを使用して仕様(Ubuntu 20.04、1 CPU、25 GBディスク)に従ってサーバーを作成し、それに加えてSSHキーがサーバーに追加されているため、パスワードの入力を求められることなくアクセスできます。 SSH の詳細については、 こちらをご覧ください。
Docker Compose V2 プラグインについて
よく知られている「docker-compose」の代わりに、コマンド「docker compose」(ダッシュではなくスペース)でアクセスできる新しいバージョンを使用します。 この新しいツールはGolangで構築されているため、前者(Pythonで構築)よりも高速です。 また、docker-compose.yml ファイルから実行したいコンテナのグループを作成するために使用できる "profiles" 属性などの新機能も含まれています。 Docker Compose V2 の詳細については、 こちらをご覧ください。
シーケンス図
このシーケンス図は、API をデプロイするプロセス全体で実行される手順を示しています。
つまり、TerraformはDigital Ocean上に新しいサーバーを作成し、新しいサーバーからGitHubからAPIリポジトリのクローンを作成し、「docker compose」でコンテナを起動します。 そうすることで、APIは、ポート5000(Flaskプロジェクトで使用)のサーバーのパブリックアドレスを介してインターネット上で利用できるようになります。
考慮 事項
リモート サーバーには、新しいサーバー インスタンスの作成時に作成された既定のユーザーである "root" を使用してアクセスされました。 サーバーに「root」リモートアクセスを持つことは良い習慣とは見なされませんが、別の方法は、新しいユーザーを作成してサーバー上でrootアクセスを無効にすることです(上記のSSH記事はその方法を示しています)。
APIアクセスに関して、同様のプロジェクトを業務上/商用目的で使用したい場合は、APIリクエストを制限/制御するメカニズムを実装することをお勧めします。 この目的のためにそこにいくつかのオプションがあります。
詳細情報
API リポジトリ: https://github.com/costa86/game-of-thrones-api
著者について: https://costa86.com/
これは、DockerコミュニティメンバーのLorenzo Costaからのゲストブログ投稿です。 ブログはもともと ここに現れました。 Dockerのコミュニティオールハンズからのこの投稿のビデオプレゼンテーションは ここにあります。
ドッカーコン2022
5月10日火曜日に開催されるDockerCon2022にご参加ください。 DockerCon は、次世代の最新アプリケーションを構築している開発者や開発チームにとってユニークな体験を提供する、無料の 1 日の仮想イベントです。 コードからクラウドにすばやく移行する方法と開発の課題を解決する方法について学びたい場合は、DockerCon 2022 でアプリケーションの構築、共有、実行に役立つ魅力的なライブ コンテンツが提供されます。 今すぐご登録ください https://www.docker.com/dockercon/