なぜDockerなのか?

開発者はなぜDockerを選んだのですか?

Linuxコンテナ(LXC)があります。VMのスクリプトがあります。ISOインストーラーを作成することもできます。
LXCは文字通りコンテナです。

システム管理者にとって、ファイアウォールなどでネットワークがセットアップされている場合、このDockerのナンセンスは冗長で無意味です。

Linuxの使い方がわからず、セキュアにできない人にとっては簡単なインストールであることは理解できますが、システム管理者にとってはDockerを学ぶことは無意味です。LXCとVMは常にDockerよりもはるかに優れています。

サーバーを管理するシステム管理者にとって、私たちは別のネットワークにLXCとVMを作成します。そのため、Discourse専用のVMを作成し、次にDockerコンテナを作成しました。-_ -

つまり、ネットワーク内のネットワークができました。すべてから隔離されたDockerコンテナを作成するためだけの、専用の隔離されたVMです -_ -

サポートの有無にかかわらず、Dockerなしでインストールするためのガイドはありません。ホストIPをコンテナに公開するためのガイドや支援もありません。

「いいね!」 1

Discourseの開発が始まったとき、それが最良のものだったからです。

今日行うとしたら、彼らが唯一違うことをするとしたら、独自のカスタムlauncherコマンドでDockerイメージをビルドして起動するのではなく、docker-composeを使用することになるだろうと推測します。

あなたは私とは違うインターネットを使っているに違いありません。私が目にするものすべてから、5台以上のサーバーでソフトウェアを管理しているほとんどの人が、何らかのコンテナを使用して管理しています。ますます多くの開発者が、すべてが一貫して維持されていることを確認するために、ラップトップ上でコンテナ内で実行しています。

単一のラップトップでDiscourse/rails/emberの開発環境を管理することさえ、ある程度の課題です。

それは本当です。Dockerなしで使用できるフォーラムが必要な場合は、Discourseを使用しないでください。

「いいね!」 9

Dockerはそんなに悪いのですか?

「いいね!」 5

私もこれに賛成です。docker-composeは100%良いでしょう。Dockerとdocker-composeの速習コースを見たばかりです。もしDiscourseがdocker-composeを使用していれば、投稿する必要もなくこの問題を解決できたはずです。

docker-composeはlauncherが行うような重労働のすべてを行いますが、docker-composeを使えばネットワークやブリッジを簡単に設定できたでしょう。

同意します。私もコンテナを使用しています。純粋なLXCコンテナです。追加ソフトウェアは不要です。しかし、それほど単純ではありません。例えば、私のサーバーの一つにはブロンズパッケージがあり、これは基本的に開発者向けです。安価で簡単なセットアップです。支払いが確認されると、メインサーバーはユーザーの選択に基づいてlxcコンテナまたはVMを作成するリクエストを受け取ります。当然、ドメイン名が必要か、カスタムサブドメインがサーバー(lxc/vm)に発行されます。また、ユーザーは独自のネットワークを設定するように求められますが、これはメインネットワークからアクセスできず、その逆も同様です。基本的に小さなAWSのようなものです。

開発においては、Dockerはラップトップや開発目的で、メインのコンピューターファイルと開発ファイル(ネットワークを含む)を分離するのに役立つでしょう。

個人的にDiscourse/rails/emberで何かを開発したことがないので、同意も反対もできません。それは私の範囲外であり、開発者がそれが簡単だと言うのであれば、知らないことに対して異議を唱える立場にはありません。

これが私の問題です。利用可能なすべてのフォーラムソフトウェアについて十分すぎるほど調査し、いくつか使用しました。

私の選択肢は2つのフォーラムに絞られました。

  1. Discourse
  2. Flarum

私は、あらゆる側面で最高のフォーラムソフトウェアとしてDiscourseを選びました。また、Dockerの経験もNginx Reverse Proxy Managerしかありませんでした。

.ymlファイルにいくつかの情報を入力してdocker-compose up -dを実行すればよいと思っていました。それは間違いでした。

現在抱えている問題は解決できますが、解明するには時間がかかるでしょう。
私はFlarumを使用することを拒否します。なぜなら、多くのプラットフォームでDiscourseを使用しており、他の優れたフォーラムソフトウェアに対して失礼なことを言うつもりはありませんが、Discourseは市場で最高のフォーラムだからです。

docker-composeへのアップグレードが役立つかもしれません :smiley:

簡単なリサーチと5分程度のガイド、そしてYouTube動画をいくつか見た結果です。

いいえ、Dockerは全く悪くありません。Dockerは、個人のマシンで開発を行う開発者や、ワークコンピューターを使用する開発者にとって完璧です。ほとんどの開発者はLinuxをメインOSとして使用していないため、LXCコンテナを作成するのはそれほど簡単ではありません。そこでDockerが登場します。Dockerはすべての主要プラットフォームをサポートしており、開発者は簡単に共同作業を行うことができます。さらに、メインOSが使用しないファイルでシステム全体を混乱させる心配もありません。

もう少し詳しく説明することもできますが、最新のDocker/Docker-ComposeはDiscourseにとって完璧です。多くの部品が必要で、Docker-Composeで簡単にまとめることができるからです。そうすれば、何か問題が発生した場合、開発者は正確に何をすべきかを知ることができます。

Discourseのアイデアがありますが、まずはインストールの問題を解決します。

「いいね!」 1

これが理由ですよね?

「いいね!」 3

「なぜDockerのみ公式にサポートしているのですか?」

Railsアプリケーションのホスティングは複雑です。サーバーにPostgres、Redis、Rubyが既にインストールされている場合でも、SidekiqおよびRailsプロセスの実行と監視、Nginxの設定について心配する必要があります。Dockerを使用すると、完全に最適化されたDiscourse構成がシンプルなコンテナで利用可能になり、ボタンをクリックするだけでDiscourseの新しいバージョンに簡単にアップグレードできるWebベースのGUIも利用できます。

「いいね!」 3

ランチャーは不要で、独自のDocker Composeインストールを作成することもできますが、それにはかなりの作業が必要です。

「いいね!」 2

主な目的は分離ではなく、デプロイの容易さです…

コンテナを分離する必要はありません。ルーティングされたブリッジ、または内部ネットワークのポートを持つブリッジで実行できます。前者は、本番環境で実行する方法です。こちら を参照してください。これは @mpalmer による、仕組みを説明したビデオです。

もし誰かが本当にこれをやりたいのであれば、Docker ファイル自体が取ったのと同じ手順に従って、サポートされているイメージによって使用されるすべてのツールの適切なバージョンを取得できます。

ガイドがないのは、それを維持する人が必要になるためです。そして、これを望む人の大多数は次のいずれかです。

  • サーバーに関する経験がほとんどない
  • 私たちが提供するものを取り入れて、自分のニーズに合わせて適応させるのに十分な知識がある

たとえば、ランチャーを使用してイメージをビルドし、それを独自のツール(lxc、kubernetes、その他何でも)でデプロイしている人がいることを知っています。それは彼らにとってうまくいっています。

複雑なソフトウェアのカスタムインストールを使用するすべての人を(無料で)サポートしようとすることは、悪夢になるでしょう。

Docker は中間的な解決策です。私たちのシステムは完璧ではありません。時間の経過とともに少しずつ成長し、当然、遅れているリファクタリングの痛みを実感しています。Docker Compose が存在する前にランチャーを作成しました。

それをリファクタリングするか、Docker Compose に移行する予定ですが、現時点では優先事項ではありません。

「いいね!」 10

Nginx Reverse Proxyで機能するために必要な環境変数を使用してDiscourseを起動するランチャーを起動するのは、それほど難しくありません。ほとんどの場合、YMLに環境変数を追加するか、./launcher start-command appから取得したものに追加するだけです。

docker-composeはDiscourseが開始された当初はあまり役に立たず、存在しなかった可能性さえあります。

「いいね!」 3

Dockerなんて嫌いだ(簡単すぎる、どんな子供でもできる、だから何も特別じゃない!退屈だ!)!そして、公式のDockerバリアントなしでも動作するようにコードを書くだけでなく…理解できない!公式の方法さえうまくいかない!

そして、チャレンジを求めている人や、すでにマスターしている人もいます!彼らにとって、Dockerはさらに障害となります。なぜなら、Dockerにも対処しなければならないからです!

Dockerを他にどのような目的で使用できますか?

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.