dockerでコンテンツをコンテナ外に置くには?
取り敢えずdockerでwebサイトを動かす
で使ったサンプルを再利用。
フォルダの構成は以下の通り。
この中でコンテナの外のコンテンツは「content_home」
www_vtest このフォルダ内でコンテナの配置、コンテンツ、設定を管理する。
content_home HTML,php等サイトのコンテンツを入れておく。コンテナの配置する。
nginx nginxの設定フォルダ
default.conf nginxの設定
Dockerfile nginxのdockerの設定
php
Dockerfile phpのdockerの設定
docker-compose.yml dockerのコンテナの設定
www_vtest\docker-compose.yml dockerのコンテナの設定
version: "3"
services:
nginx:
build: ./nginx
ports:
- 8085:80
volumes:
- ./content_home:/usr/share/nginx/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
php:
build: ./php
volumes:
- ./content_home:/usr/share/nginx/html
content_home
の中身はコンテナの外にあるか確かめる。
www_vtest\content_home\hello.txt
を追加。
hello docker
を記入して保存。ブラウザで表示してみる。
OK!
コンテンツを追加してみる。
now.phpを
www_vtest\content_home\
に追加。
ブラウザで表示してみる。
まとめ
docker-compose.yml dockerのコンテナの設定
のvolumes:で指定した箇所が基本的にコンテナの外に出ている事になる。
volumes:
- [コンテナの外のパス]:[コンテナ内でのパス]
- [コンテナの外のパス]:[コンテナ内でのパス]がPHP,NGINX共に同じ理由は・・・・コンテナ内のPHP、NGINXのデーモンのコンテンツの見先が同じだから。
PHPとNGINXのコンテナは別なので、両方(PHPとNGINX)に書いておく必要がある。
これを踏まえて、mysqlのDBをコンテナ外に置いて永続化する。