【Docker】MAMP配下のディレクトリをコンテナにマウントできなかったときの対処法


もともとMAMP環境で作成していたWebアプリのディレクトリをDockerコンテナにマウントしようとした時に出たエラーの対処をメモ的にまとめておきます。

やりたいこと

phpのイメージをベースにしたコンテナに、Webアプリのコード類が入っているディレクトリをマウントしてコンテナを起動したい。

Dockerfile, docker-compose.ymlの中身はシンプルにこんな感じ。
Dockerfileとdocker-compose.ymlは同じディレクトリ階層に置いています。

Dockerfile
FROM php:7.2-fpm
WORKDIR /var/www/html/app
docker-compose.yml
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コンテナへのマウントが可能になります。