もともとMAMP環境で作成していたWebアプリのディレクトリをDockerコンテナにマウントしようとした時に出たエラーの対処をメモ的にまとめておきます。
#やりたいこと
phpのイメージをベースにしたコンテナに、Webアプリのコード類が入っているディレクトリをマウントしてコンテナを起動したい。
Dockerfile, docker-compose.ymlの中身はシンプルにこんな感じ。
Dockerfileとdocker-compose.ymlは同じディレクトリ階層に置いています。
FROM php:7.2-fpm
WORKDIR /var/www/html/app
version: '3'
services:
php:
build: .
volumes:
- .:/var/www/html/app
後々複数コンテナを起動することを考えて、docker-composeでコンテナを起動させます。
#出たエラー
エラー内容はこんな感じ
ERROR: for app_container Cannot start service web: Mounts denied:
The path /Applications/MAMP/htdocs/app is not shared from the host and is not known to Docker.
You can configure shared paths from Docker -> Preferences... -> Resources -> File Sharing.
See https://docs.docker.com/docker-for-mac for more info.
ERROR: for web Cannot start service web: Mounts denied:
The path /Applications/MAMP/htdocs/app is not shared from the host and is not known to Docker.
You can configure shared paths from Docker -> Preferences... -> Resources -> File Sharing.
See https://docs.docker.com/docker-for-mac for more info.
ERROR: Encountered errors while bringing up the project.
内容としては「/Applications/MAMP/htdocs/appのパスがホスト(このPC)から共有されていません。Dockerに知らされていません」といった感じ。
#対処
エラー文に対処法が書かれているので、そのまま実行します。
MACであれば画面上のDockerアイコンからPreferencesを選択。
ResourcesからFile Sharingを選択。
ここでDockerコンテナにマウントできるディレクトリが設定されているので、MAMP配下にあるディレクトリを指定します。
/Applications/MAMP/htdocs
このパスを追加することでMAMP配下のディレクトリでもDockerコンテナへのマウントが可能になります。