‫今回の課題では､ Dockerfileから自分のイメージを構築してもらいます｡
‫基本的にはDockerfileを一行ずつ見ていき､ どうすれば正しく動作するのかを自分で考えていくことになります｡
‫これは､ Dockerで実際にやってみたいことの一つです｡
‫ちょっとオタクなんです｡ 既存のアプリから新しいDockerfileを作成することは､ 私にとって､
‫実際にアプリをより良くしているように感じられるので､ ちょっと気分が高揚します｡ なぜなら､ これまで複雑だったり､ 工程に一貫性がなかったりしたものが､
‫予測可能になり､ 自動化されることに挑戦するのが好きだからです｡
‫それがDockerfileの正体です｡
‫Docker管理者の一般的な仕事は､ カスタムイメージを作成したり､ 他の人が自分のソースコードのためにDockerfilesを作成するのを手伝ったりすることです｡
‫多くの場合､ 公式の画像を見に行く必要があり､ アプリや使用する言語やパッケージについてそれほど詳しくなくても､
‫「Docker化」する必要がある場合が多いのです｡
‫つまり､ 既存のアプリやサービスのDockerfileを作って､ それをコンテナできちんと動作させるということです｡
‫しかし､ そのためには､ 公式の画像と一致するものを探したり､ 公式ではないかもしれないが､ できるだけ必要なものに近いものを探したりする必要があるのです｡
‫そして､
‫イメージリポジトリとその中のDockerfileを調査して､ どのようにビルドされているかを理解し､ そこからfromコマンドを使ってどのようにビルドできるかを理解するのです｡
‫最終的に完全に動作するイメージを得るためには､ その既存のイメージとビルド手順を融合させる技術を習得する必要があります｡
‫今回は､ 既存のNode. jsアプリをDocker化します｡
‫繰り返しますが､ Nodeについて本当に何も知っている必要はありません｡ jsは､ これはWebアプリだと言うこと以外に､
‫いくつかの情報を提供し､ あなたはそこからDockerfileを作成する必要があります｡
‫ここでは､ Dockerfileを作成し､ それをビルドしようとするのがその概要です｡
‫そして､ 容器に入れてテストしてみるということですね｡ そうして動作するようになったら､
‫それをDocker Hubにプッシュしてください｡ そして､ ローカルで削除することになります｡ そして､ もう一度実行するのです｡
‫特にこのビルドとテストの部分は､ 繰り返し行われることを本当に期待しています｡
‫一発でDockerfileが正しく表示されることはまずないですね｡
‫そして､ ビルドしようとするとビルドエラーが出ます｡ そして､ それがうまくいって完成するまで､
‫どんどん変えてはまた作っていく｡ それから､ コンテナでテストをしてみると､
‫最初からうまくいくとは限りません｡ そのため､ もう一度Dockerfileを変更して再構築し､ そこから別のコンテナを作成する必要があります｡
‫だから､ そのプロセスを期待し､ 自分でそれをやるだけで､ たくさんのことを学べるはずです｡
‫この課題では､ GitHubからダウンロードしたリポジトリのルートにあるDockerfile
‫assignment 1ディレクトリから始めることになります｡
‫また､
‫実際に公式の画像を使用するため､ その使用方法について多くの良いドキュメントがあることに留意してください｡ そして､ その中には公式イメージのDockerfileも含まれています｡
‫私が非常に小さなLinuxディストリビューションとしてAlpineについて言及したのを覚えているなら､
‫ここで使って欲しいのはそれです｡ Docker Hubに掲載される特定のバージョンのNodeを使うことになるのですが､
‫それが6なんです｡ xバージョンです｡ 6のブランチの下にあるオプションのどれかを使用することができます｡ 期待されるテスト結果は､ 実際にローカルでlocalhostを使用してWebブラウザで表示できることです｡
‫そして､ ローカルで動作するようになったら､ Docker Hubのアカウント名と､ 自分で作成した新しいレポ名を使って､
‫実際に適切な名前でタグ付けすることになります｡ Docker Hubにプッシュアップするのです｡
‫そして､
‫Docker Hubにアクセスして､ そこにあることと正しく見えることを確認したら､ ローカルイメージをキャッシュから削除します｡ そして､ 最後にもう一度コンテナを実行して､
‫Docker Hubから実際に再ダウンロードし､ すべてが予想通りであることを確認するために実行します｡
‫他の課題と同じように､
‫もし行き詰まったら､ そして行き詰まったら､ 次の講義では､ 実際に私がこの課題を通して､ どうしたらいいかを考えていることを思い出してください｡
‫他の課題と同じように､
‫いくつかの選択肢や方法があるはずです｡ なぜなら､ これも厳密な科学ではないからです｡
‫あなたのDockerfileは私のDockerfileと全く同じではないかもしれませんが､ エラーなく正しくビルドされ､
‫そしてWebブラウザでlocalhostでWebサイトが動作するようになれば､ それは成功と言えるでしょう｡
‫頑張って､ 次の講義でお会いしましょう｡