特にRailsの場合、私は経験がありませんが、Dockerとソフトウェアエンジニアリングの観点から見てみましょう。
Dockerチームは、コンテナはアプリケーションの出荷に関するものであると、時には非常に積極的に提唱しています。 この本当に素晴らしい声明 、Jerome Petazzoniは、関心の分離がすべてだと言います。これがまさにあなたがすでに理解しているポイントだと思います。
移行またはセットアップを開始するrailsコンテナーを実行することは、初期展開に適している可能性があり、開発中に必要になることがよくあります。ただし、本番環境に移行するときは、懸念事項を分離することを検討する必要があります。
したがって、Nレールコンテナを実行し、管理タスクを実行するために使用する任意のコンテナにツール/移行/セットアップを追加するために使用する1つのイメージがあると言えます。 公式レール画像 の開発者をご覧ください これについて言う:
そのイメージを見ると、セットアップまたは移行コマンドはありません。使い方はユーザー次第です。したがって、複数のコンテナを実行する必要がある場合は、先に進んでください。
mysqlでの私の経験から これは正常に機能します。データのみのコンテナーを実行してデータをホストし、mysqlサーバーでコンテナーを実行し、最後にバックアップや復元などの管理タスク用のコンテナーを実行できます。 3つのコンテナすべてで、同じイメージを使用できます。これで、たとえばいくつかの Wordpressからデータベースに自由にアクセスできます。 コンテナ。これは、関心の分離を明確にすることを意味します。 docker-compose
を使用する場合 これらすべてのコンテナを管理することはそれほど難しくありません。確かに、複数のコンテナで構成される複雑なアプリケーションのセットアップをサポートするサードパーティのコンテナやツールはすでにたくさんあります。
最後に、 dockerかどうかを判断する必要があります およびマイクロサービスアーキテクチャ あなたの問題にぴったりです。 この記事 で概説されているように 反対する理由がいくつかあります。主要な問題の1つは、まったく新しい複雑さの層が追加されることです。しかし、それは多くの解決策の場合であり、あなたはこれを知っていて、それを除いても構わないと思っていると思います。