好奇心旺盛な開発者でありテクノロジー愛好家であるため、毎日何か新しいことを学ぶ機会を逃すことはありません。この学びたいという衝動は、私たちも共感できるものです。この投稿では、 RailsアプリケーションをDocker化する方法 Rails Docker Compose の助けを借りて。 Docker が必要なので、それが何なのか、なぜ必要なのかを知っておく必要があります。
アプリの開発と Docker 化を始めましょう。
ドッカーとは何ですか?
使用する ドッカーを使用すると、サービスまたはアプリケーションとそのすべての依存関係を標準化されたユニットにパッケージ化できます。通常、このタイプのユニットには Docker イメージが使用されます。
アプリケーションの実行に必要なすべてのコンポーネントが含まれています。 Docker イメージには、コード、ランタイム、ライブラリ、および Docker なしで実行するためにサーバーにインストールするその他のものがすべて含まれています。
Docker と仮想マシンの違い
Vagrant、VirtualBox、または VMWare を使用して仮想マシンを実行したことがあるかもしれません。仮想マシンはサービスを分離できるにもかかわらず、いくつかの大きな違いがあるため、効率が大幅に低下します。
分離するアプリケーションごとに、ゲスト オペレーティング システム全体が必要です。仮想マシンの起動には何秒もかかる場合があり、それぞれのサイズが最大 1 ギガバイトになる場合があります。
Docker コンテナはホストのカーネルを共有し、グループや他のカーネル ライブラリによって分離が実現されます。 Docker の軽量な性質により、コンテナは通常数ミリ秒で起動され、実行に多くのディスク領域を必要としません。
結論は何ですか?
あなたの能力を開発できたら素晴らしいと思いませんか? Railsアプリケーション RVM や Chruby を使用せずにワークステーション上で独立して実行でき、Ruby のバージョンを変更するのは簡単でしたか?
貴重な SSD ストレージを無駄にすることなく、10 個の Rails プロジェクトのそれぞれに必要なものをすべて分離できたら素晴らしいと思いませんか?
Rails、PostgreSQL、Redis、Sidekiq スタックをわずか数秒で起動できたら素晴らしいと思いませんか?
自分のプロジェクトを GitHub などで共有できるか想像できますか? 開発者 たった 1 つのコマンドを実行するだけで、数分ですべてを実行できるでしょうか?
Docker のおかげで、これらすべてのことが可能になります。
Docker を使用する利点
Docker がソフトウェア開発の生産性と全体的なエクスペリエンスを向上させる 5 つの主要な利点を提供するとします。
1. 環境間の一貫性
アプリケーションは Docker でカプセル化できるため、環境間で簡単に移動できます。 Docker を実行できるすべての環境とマシンで Docker を実行できます。
2. 開発チームを拡大する簡単な方法
新しい開発者は、アプリケーションをローカルで実行する方法を学ぶために 30 ページのドキュメントを読む必要はありません。新しい開発者はこのプロセス中に間違いを犯す可能性が高く、このプロセスには 1 日以上かかることもあります。
Docker を使用すると、マルチサービス アプリケーションを自動化、反復可能、効率的にチーム全体にデプロイできます。いくつかのコマンドを実行すると、すべてが機能するようになります。
3. ニーズに合ったテクノロジーを選択する
1 つの言語しか使用しないスタートアップやショップとしては、不利な立場に置かれる可能性があります。開発者は、アプリケーションを Docker コンテナーに分離することで、新しい言語やフレームワークを試すことができます。
選択したテクノロジーを他の開発者がセットアップする必要はもうありません。ユーザーは、あなたから渡された Docker イメージを実行できます。
4. イメージを一度ビルドすると、何度もデプロイできます。
事前に構築された Docker イメージを使用すると、アプリケーションを数ミリ秒で起動できます。その結果、拡張性が非常に簡単になります。
依存関係のインストールなど、時間のかかるタスクをビルド時に 1 回実行するだけで済みます。イメージが構築されたらすぐに、それを別のホストに移動できます。
これにより、展開の予測可能性と復元力が向上するだけでなく、迅速なスケールアップやスケールダウンにも役立ちます。
5. 運用管理者と開発者が連携できる
開発者と運用管理者は、Docker のツールセットを使用して連携してアプリケーションをデプロイできます。
抽象化は Docker によって提供されます。アプリケーションは配布できるため、別のチームはそのセットアップや構成方法を知る必要はありません。
さらに、Docker イメージをパブリックまたはプライベートに配布することが容易になります。新しいバージョンがプッシュされると、何が変更されたかを追跡できます。
前提条件
Dockerをインストールする必要があります。 Docker はほとんどの主要な Linux ディストリビューションで実行でき、OSX や Windows でも実行できるツールがあります。
Linux ユーザーはこのチュートリアルから恩恵を受けることができますが、OSX および Windows ユーザーは調整が必要なときにコメントを見つけることができます。
Docker のインストール
オペレーティング システムに基づいて、以下のインストール ガイドのいずれかに従ってください。
- Linux: https://docs.docker.com/get-started/
- Windows および Mac: https://www.docker.com/products/docker-desktop
続行する前に、Docker をインストールし、上記のインストール ガイドのいずれかにある hello world の例を完了していることをお勧めします。
結論
プロダクションのコンテナ化 Railsアプリケーション ご存知のとおり、これには多くの課題が伴います。アプリケーションが成長するにつれて多くの依存関係が蓄積され、このような移行が困難になる場合があります。それがバックグラウンド ワーカー、メーラー、または秘密であるかどうかは関係ありません。ほとんどの落とし穴に対処するための確立されたパターンがあります。実稼働アプリケーションを Docker で動作させるための初期作業が完了すると、将来の変更やデプロイメントが容易になるため、投資する価値があります。