[Docker] ローカルのファイルを docker のコンテナにマウントする

マウントするには docker-compose.yml に volumes を設定する。

前回、Dockerfile 内で ADD を利用したが、文字通りファイルをコンテナに追加(コピー)する命令。

開発での利用を想定すると、マウントが必要そう。
ドキュメントを読むと Sharing the OS X file system with Docker containers という記述がある。

% docker version
Client:
 Version:      1.12.0-rc2
 API version:  1.24
 Go version:   go1.6.2
 Git commit:   906eacd
 Built:        Fri Jun 17 20:35:33 2016
 OS/Arch:      darwin/amd64
 Experimental: true
Server:
 Version:      1.12.0-rc2
 API version:  1.24
 Go version:   go1.6.2
 Git commit:   a7119de
 Built:        Wed Jun 29 10:03:33 2016
 OS/Arch:      linux/amd64
 Experimental: true

docker コマンド

run -v オプション(Volume)でマウントできるとのこと。

Docker for Mac プライベートベータを早速使ってみた! – paiza開発日誌

MacのファイルシステムはDockerホストにマウントされており、ファイルシステム全体が”/Mac”として参照できます。 その他、”/Users”, “/var/log”, “/Users”, “/Volumes”, “/tmp”, “/private”もマウントされています。

-v オプションで deadwood-httpd ディレクトリを コンテナの /var/www/html/ にマウントする。

% docker run -v "/Users/****/projects/sandbox-docker/deadwood-httpd/:/var/www/html/" -it "deadwood/httpd" bash
[root@c139d1bf89b4 /]# ls var/www/html/
Dockerfile  index.html

ローカルでファイルを作成する。

% touch deadwood-httpd/foo.html
% ls deadwood-httpd
Dockerfile  foo.html    index.html

ファイルの追加を確認する。

[root@c139d1bf89b4 /]# ls var/www/html/
Dockerfile  foo.html  index.html

docker-compose.yml

docker-compose.yml に volumes を設定する。

日本語ドキュメントがありがたいです。助かります。

docker-compose.yml
version: '2'
services:
  httpd:
    build: ./deadwood-httpd
    ports:
     - "8080:80"
    depends_on:
     - db
    environment:
     - DATABASE_HOST=db
    volumes:
     - ./deadwood-httpd:/var/www/html
  db:
    build: ./deadwood-database

コンテナの実行を停止すると、コンテナ内の変更は消えてしまう。
データを永続化する場合には、ローカルに逃がすような対応が必要になる。

WEB+DB PRESS Vol.86
WEB+DB PRESS Vol.86

posted with amazlet at 16.06.29
結城 洋志 沖元 謙治 足永 拓郎 林 健太郎 大竹 智也 内田 誠悟 伊藤 直也 中山 裕司 hiroki.o 泉水 翔吾 佐藤 太一 高橋 俊幸 西尾 泰和 舘野 祐一 中島 聡 橋本 翔 はまちや2 竹原 麻植 泰輔
技術評論社
売り上げランキング: 237,581