‫それでは､ Docker FileコマンドでCassandraサーバを起動し､ その後データベース・スキーマをインポートする必要があるのですが､
‫Nunoの質問です｡
‫そのためにはどうしたらいいのか｡
‫もし誰かがチャットでまだ答えていなかったら､ 私がとりとめのない話をしている間にそうなってしまうこともあるので､
‫エントリーポイントスクリプトはコンテナ起動時に行う普遍的な方法のようなものです｡
‫つまり､ Dockerファイルの中に､ エントリーポイントとBMDがあるということです｡
‫私の講座「Dockerマスター」では､
‫CMTにフォーカスしています｡
‫CNDのエントリーポイントを分解すると､ コンテナの起動時にDockerが実行する1行または1コマンドのうちの2つの部分となります｡
‫しかし､ bashスクリプトの魔法を使えば､ エントリーポイントをCMTの前にあるコマンドの先頭にする代わりに､
‫スクリプトを実行し､ そのスクリプトの最後で､ コマンドラインの残りの部分に実行を移すように指示することができます｡
‫どんな永続的なデータストレージ・システムでも､
‫ここでは同じように動作するようになっています｡
‫そして､ これらのリリースのどれかをクリックしてトップにすると､ オープンソースのドッカーファイルが表示され､ このファイルの中にさまざまなものが入っています｡
‫もちろん､ 私の続編をインストールし､ 続編を適切に設定しているのですが､ 下の方にいくつかあることにお気づきでしょう｡
‫一つはシェルスクリプトをある場所にコピーして､ そこでアセンブルを実行しているのですが､ これは単に後方互換性のためです｡
‫しかし､ ここが重要な部分です｡ エントリーポイントのスクリプトは､ エントリーポイントそのものであり､
‫暗黒のファイルのコマンドはスクリプトである必要はないのです｡
‫繰り返しになりますが､ エントリーポイントが存在し､ OMDが表示されたら､ それらをまとめて1つのラインで実行するだけです｡
‫エントリーポイントとしてよく使われるのは､ コマンドの先頭か､
‫Dockerを使ってコマンドラインユーティリティを実行する場合でしょう｡
‫Dockerイメージとその背後にあるhub repoを取得し､ コンテナ内でコマンドラインユーティリティを1つ実行する､
‫ということをやっています｡
‫ここでは､ コマンドそのものをエントリーポイントとしています｡
‫そして､ Dockerファイルにその両方があると､ CMBはその後に行くので､ 一緒に切り替わるだけなんです｡
‫デフォルトのCRM Dを走らせているので､ このコマンドから実行するとDocker
‫runができると思えばいいんです｡
‫ブレット・フィッシャー・スラッシュHP払い｡
‫そして､ エンターキーを押すと､ 自動的にバージョンコマンドが実行されるんだ｡
‫でも､ そのコマンドラインを正しく入力し続ければ｡
‫タッカーラン
‫ブレットフィッシャー そうすれば､ 画像を引っ張ってくることができるんです｡
‫このイメージを実行すると､
‫デフォルトで実行され､ 基本的にヘルプがダンプされます｡
‫しかし､ 最後に何かを変更すれば､ Docker Runコマンドのフォーマットは､
‫Docker Runを実行し､ オプションを設定し､ 実行するイメージを設定し､ それ以降はCNDの行に置き換わることを思い出してください｡
‫つまり､ CMTの動的な置き換えのようなものですね｡
‫つまり､ ここでGoogle dot comを実行すれば､ デフォルトで実行されるダッシュダッシュのバージョンを置き換えることができます｡
‫これは､ Docker runをコマンドラインユーティリティとして使用できる､ とてもクールな方法です｡
‫これが私の例で､ 基本的にはその方法です｡
‫もう一つの方法は､
‫シェルスクリプトを使う方法です｡
‫そして､ この一番上までスクロールして､ 8ポイントノーディレクトリとすると､ 1つ上のディレクトリに移動して､
‫そこに別のファイルがあることがわかります｡
‫これは､ ビルド時にコピーされるドッカーエントリーポイントスクリプトです｡
‫さて､ このスクリプトでは何が起こっているのでしょう｡
‫この中には､ たくさんのものが入っているんだ｡
‫おそらく､ 少なくとも100行はあるのではないでしょうか｡
‫うん｡
‫実際には何百行にもなります｡
‫しかし､ ここでマジックなのは､ この部分です｡
‫ズームアウトする｡
‫なるほど｡
‫スクロールバーをなくす｡
‫私はあなたに会いたくありません｡
‫そこで､ その一番下のRasに行きましょう｡
‫その通りです｡
‫そしてドル記号は､ 「このスクリプトを終了しますから､ 残りのコマンドラインに実行を移してください」とシェルに伝えるもので､
‫CMTにあるもの､ この場合は私の続編のデーモンです｡
‫つまり､ この場合､ コンテナの起動時にスクリプトが実行されることになります｡
‫スクリプトの最後には､ Please do whatever else I told you at the end of this commandと書いてあり､
‫それでデーモンが実行されます｡
‫You're you're my sequel demonを前面に出すことで､ 稼働し続けるように｡
‫このスクリプトが行うのは､ データベースコンテナを起動したときにバックグラウンドで起こっている､ おそらくあなたが気づいていないすべてのことです｡
‫設定したいデフォルトユーザーを作成します｡
‫これは､ rootのパスワードをあなたが設定したいものに変更します｡
‫伝えた内容に基づいてデータベースを作成し､ その内容や環境変数をすべて正しく実行しているのです｡
‫というのも､ もしこれを複製してライブラリにバックアップした場合､ ほとんどの公式イメージでは､
‫環境変数の束があるはずで､ それをすべてここで指定しているのです｡
‫そして､ これらの環境変数はすべて､ 私の続編を事前に設定するために､ このスクリプトで使用されています｡
‫さて､ このファイル自体に潜り込んでみると､ 環境変数を設定したり､ ドラッカーズ・ウォーム・シークレットを使っている場合はファイルを探したりして､
‫基本的には設定に必要なすべてのデータを取得しています｡
‫その後､ 私の続編が起動し､ rootパスワードの変更を含め､ 他のすべてのものを設定しました｡
‫そして､ 私の続編をシャットダウンし､ スクリプトを終了させ､ その実行を私の続編に渡し､ 再び起動させますが､
‫今度は永久に続きます｡
‫つまり､ 基本的には続編を開始し､ あることを行い､ 続編を停止し､ バックアップを開始するということです｡
‫公式コンテナ内の永続的なストレージシステムは､ すべてこの方法で動作しています｡
‫この質問に対する長い答えは､ あなた自身のカスタム巻き込みスクリプトで使いたいということです｡
‫デフォルトのものがあればそれをコピーするか､ あるいは自分で作って､ 最初の起動時にそのスキーマを作成する独自のイメージを作ります｡
‫さて､ 一旦データベース内にスキーマができると､ スキーマの更新はあまりしたくなくなるでしょう｡
‫コンテナの外にある他のユーティリティを使って､ 別のコンテナからマイサイクルコマンドを実行し､
‫それがネットワーク経由で実行されるというようなことですね｡
‫これを変更する必要はなく､ 単純にCassandraを立ち上げてから､ 別のコンテナからリモートでスキーマを追加することもできますが､
‫その順番を正しく制御する必要があります｡
‫Cassandraが起動するのを待つ必要があります｡
‫独自のスクリプトを持つ別のコンテナを用意し､ そのスクリプトはCassandraの準備ができたかどうかを常にチェックするようなスマートなものでなければならないでしょう｡
‫そして､ 準備ができたら､ スキーマのアップデートまたはオリジナルのスキーマのインストールを実行します｡
‫基本的にはそのようにすることができますし､ 多くの場合はその方法が正しいのでしょうが､
‫特にローカルで開発を行っている場合や､ 小規模で簡単なものを高速化したい場合､
‫初回のスキームを構築したい場合､ それを自動的に行いたい場合､ ここで行うことは､
‫公式デフォルトイメージを使用して､ 独自のスキーマとファイルを独自のカスタムイメージに追加し､
‫初回起動時にそれを行うようにすることです｡
‫ここで問題なのは､ このエントリーポイントスクリプトが､ 少なくともそのイメージからコンテナを起動するたびに実行されることです｡
‫そのため､ スクリプトが十分に賢く､ すでにスキーマを持つ広告データベースで何度もスキーマを再実行しないようにしたいものです｡
‫そのため､ モデルによっては､ 定期的に更新したり､ スウォームクラスターやキューバン・アイディア・クラスターでデータベースを常に移動させたりする場合､
‫データベースコンテナ内で更新するのは正しい戦略とは言えないかもしれませんが､
‫このオプションは存在します｡
‫だから､ チェックしてみてください｡
‫これは､ エントリーポイントをどうするかというクリフノートのようなもので､ 私のオリジナルのコースにはありませんでした｡
‫ですから､ このビデオが入っていて､ 少なくとも何もないよりはましな補助教材があると言えるでしょう｡