この記事はDockerが動作する環境が前提です。
目的
サクっとローカルにあるHTMLファイルをブラウザで確認する。
よくあるケース
「このHTMLなぜか動かないので確認してもらえますか?」みたいな感じでざっくりHTMLファイルを渡されたとき、そのままブラウザ開くと外部ファイル読み込みがうまく行かずに悩むことありますよね?
一昔前ですとXAMPやMAMPを立ち上げたり、OS標準の共有サービスを使ったりしていました。
公開手順もちょっと面倒ですし、公開を止めるのを忘れたりして余計なリソースを使い続けてしまうことが多々ありました。
Dockerの誕生でOSを極力汚さずに手軽にローカルHTMLファイルを確認する方法があります。
方法
ローカルにサーバを立ち上げてHTMLファイルがあるディレクトリを一時的に公開。
コンソールでHTMLファイルのディレクトリまで行き
docker run -v $(pwd):/usr/share/nginx/html:ro --rm -p 8080:80 nginx
これだけでtest.htmlっていうファイル名であれば
http://127.0.0.1:8080/test.html
でファイルにアクセスできるようになります。
-dオプションを付けずデーモンとして立ち上げないので通信ログも見えますし、Ctrl+Cプロセスを止めると--rmによりコンテナも消えるのでクリーンです。--nameでコンテナ名を付けなくて良いのでコマンドも短くなり覚えやすいですね。
宗教上の理由でApacheしか受け付けない人は
docker run -v $(pwd):/usr/local/apache2/htdocs/:ro --rm -p 8080:80 httpd
で立ち上げてください。
$(pwd)が動かないとか意味がわからない方は以下のように公開したいディレクトリパスを指定してください。
docker run -v /Users/qiita/Downloads:/usr/share/nginx/html:ro --rm -p 8080:80 nginx
あとがき
過去に似たような記事を書きましたが別にデーモン化させる必要もなく終わったあとの後片付けも--rmオプション使えば良いことに気づいたので改めて記事化しました。