docker-composeを用いてホスト側のhtmlの編集をコンテナ側のhtmlに反映させる
開発環境は、Windows 10 Pro(64bit) + docker desktop 3.0.4 + Docker Engine 20.10.2 + docker-compose 1.27.4。
ローカル側でDocker環境で開発しようと思ったときに、通常、Dockerでは、コンテナを作って、自分の作ったhtmlファイルを表示して、それをホスト側で編集してみると、コンテナ側には反映されません。ファイルを編集するたびに、いちいち、イメージを作成して、コンテナを作成しなければならないのか?と思ったのですが、調べてみると、docker-compose.ymlのvolumesを使えば、編集を反映できそうなのでやってみました。
1.プロジェクト用のディレクトリを作成
2.Docker DesktopのSettingsのFILE SHARINGにこのディレクトリを絶対パスで指定する
以下を参考にしてください。
docker-composeでstatus code not OK but 500が出現したときの解決法 - k01ken’s b10g
3.Dockerfileを作る
FROM httpd:alpine COPY index.html /usr/local/apache2/htdocs/index.html
4.docker-compose.ymlを作る
version: '3' services: web: build: . ports: - '8080:80' volumes: - .:/usr/local/apache2/htdocs/
5.index.htmlを作る
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> </head> <body> <h1>編集前</h1> </body> </html>
6.コマンドを実行する
まず、
docker-compose build
その次に、
docker-compose up -d
7.localhost:8080にアクセスします
8.さっき作ったindex.htmlを編集する。もう一度、localhost:8080にアクセスすると、反映されていると思います。
9.終わったら、以下のコマンドで終了
docker-compose down -v