DockerでNginxを動かしていこうと思います。
Nginxのリポジトリをチェック
Docker HubのNginxのリポジトリを見に行く
https://hub.docker.com/r/library/nginx/
Nginxの実行
Exposing external portに記載されているコマンドでNginxの初期画面を表示させてみる
$docker run --name hogehoge -d -p 8080:80 nginx
--name: 任意のイメージ名を指定する
-d: デタッチモード コンテナ実行時にバックグラウンドで起動する事ができる
(deamonのような常駐のプログラムでつかう)
-p ホストのポート番号:コンテナのポート番号: Webで叩くポート番号は実はコンテナのポート番号と紐付いてますよ。という宣言。
###Q.-dしてないと何がかわるの?
フォアグラウンドで動作するために、それ以外の処理を実行することができない。
プロセスを終了させると、コンテナも停止してしまう。
下記のようにログが流れてくる
$docker run --name hogehoge -p 8080:80 nginx
172.17.0.1 - - [30/Sep/2018:15:13:51 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" "-"
##Nginxで自分で作成したHTMLを表示させる
###表示させたいHTMLファイルを作成
html
というディレクトリを作ってその中にファイルを作成します。
<!DOCTYPE html>
<html>
<body>
<h1>hugahuga</h1>
<p>husahusa</p>
</body>
</html>
作成したファイルのパスを確認します。
/Users/ユーザー名/workspace/dockerPractice/html
それでは、Nginxで上記ファイルを表示させるコマンドを実行していきましょう
###バインドマウントを使用してNginxを起動する
docker run --name hugahugahuga -v /Users/masa/workspace/dockerPractice/html:/usr/share/nginx/html:ro -d -p 8080:80 nginx
先程の起動と異なる部分は`-v'の部分
-v ホストのディレクトリ:コンテナ側のマウントポイント:オプション
今回はReadOnlyを示すro
オプションを指定している。
###実行結果
ちゃんとファイルがよみこまれているのがわかります。
###バインドマウントのメリットは?
Nginxのコンテナ外にNginxで公開するコンテンツを配置することができるため
- 手元で簡単に更新をためすことができる
- Gitで管理することができる
これでサービス全体のディレクトリごとつなげてるんだろうな。
##参考
ゼロからはじめる Dockerによるアプリケーション実行環境構築
セッション4 chapter22~23
https://www.udemy.com/docker-k/