docker for windowsで開発環境を用意する写経をしています。
そこで、Apache Mysql Postgresの3つのサービスをつかって環境を用意しようと思いっています。
docker
1version: '2' 2 3services: 4 app: 5 build: "./docker-file" 6 ports: 7 - "11180:80" 8 volumes: 9 - "./source-file:/var/www/html" 10 links: 11 - "mysql:mysql" 12 - "postgres:postgres" 13 postgres: 14 image: postgres:9.4 15 environment: 16 POSTGRES_USER: my_application 17 POSTGRES_PASSWORD: my_application 18 restart: always 19 ports: 20 - "5432:5432" 21 volumes: 22 - "postgres_db:/var/lib/postgresql/data" 23 - ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d 24 mysql: 25 image: mysql:5.7.22 26 volumes: 27 - "./mysql-data:/var/lib/mysql" 28 - "./mysql-cnf:/etc/mysql/conf.d" 29 ports: 30 - "3306:3306" 31 environment: 32 # アプリケーションから利用するユーザー 33 - MYSQL_DATABASE=my_application 34 - MYSQL_USER=my_application 35 - MYSQL_PASSWORD=my_application 36 # root パスワード 37 - MYSQL_ROOT_PASSWORD=root_password 38volumes: 39 postgres_db: 40 external: true 41
検証は上記のdocker-compose.ymlで作業中です。
Mysqlのdata および Apacheのアプリケーションのストレージの永続化は問題ないのですが、
Postgresは調べると Docker for windowsに限り volumesでマウントすると永続化ができないという症状があるようです。
そのため、データヴォリュームで代替する処理を多くの方がやっているようでしたが、このデータボリュームは具体的にホストOSのどこに存在するのでしょうか?
docker inspect コンテナIDをたたくと
json
1 2 "Mounts": [ 3 { 4 "Type": "volume", 5 "Name": "postgres_db", 6 "Source": "/var/lib/docker/volumes/postgres_db/_data", 7 "Destination": "/var/lib/postgresql/data", 8 "Driver": "local", 9 "Mode": "rw", 10 "RW": true, 11 "Propagation": "" 12 }, 13 { 14 "Type": "bind", 15 "Source": "/host_mnt/c/Users/guest/development_php7/docker-entrypoint-initdb.d", 16 "Destination": "/docker-entrypoint-initdb.d", 17 "Mode": "rw", 18 "RW": true, 19 "Propagation": "rprivate" 20 } 21 ], 22
上記の
Mounts[0].Sourceの値がホスト側OSに専有されたディレクトリだと
認識したのですが、Docker for windowsで作業中のため
上記のパスが存在しません。
このデータボリュームによるストレージはホストOS側にあるのでしょうか?
それともコンテナ側ですか?
ご教授お願い致します丸
あなたの回答
tips
プレビュー