dockerでコンテンツをコンテナ外に置くには?


VB TIPS AND SAMLPE Docker入門

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をコンテナ外に置いて永続化する。