【Docker】 macOS Catalina 10.15 で使うときはプライバシー設定も確認する

Dockerでコンテナに、ホスト側のフォルダをマウントさせて、共有フォルダとして使う機能があります。この機能でマウントさせるフォルダにアクセスできないときのチェック箇所についてです。

この記事の動作環境はホストOSはmacOS Catalina 10.15です。

macOSをホストにしているときは、プライバシー設定も確認が必要だったことを記事にしました。

スポンサーリンク

状況

Dockerでnginxをコンテナ化させて、開発用のテストWebサーバーを作っています。その中に配置するファイルは、色々変更を加えたいので、Docker Composeの設定ファイルを次のようにして、ローカルのフォルダをマウントさせています。

version: "3"
services:
  nginx:
    build: .
    ports:
      - 80:80
    volumes:
      - ./content_home:/usr/share/nginx/html

しかし、走らせてみると、404 Not Foundとなってしまい、アクセスできないという状況になってしまいました。

上記の設定が書かれているdocker-compose.ymlを含めた一式を一つのフォルダに入れて他の場所で実行すると、問題なく表示されています。

どこをチェックするべきか

このようなときに、チェックするべき場所は以下の通りです。

  • /usr/share/nginx/htmlは存在しているか?
  • /usr/share/nginx/html内のファイルは見えるか?
  • ホスト側の./content_homeは存在しているか?
  • ホスト側の./content_homeのパーミッションなどのアクセス権は読み取り権限が付与されているか?

コンテナ側の確認

コンテナ側の/usr/share/nginx/htmlを確認します。

$ docker container exec testserver_nginx_1 ls /usr/share/nginx
html

htmlと出力されたので、htmlフォルダは存在しています。次にフォルダ内のファイルを確認します。

$ docker container exec testserver_nginx_1 ls /usr/share/nginx/html
ls: cannot open directory '/usr/share/nginx/html': Operation not permitted

アクセスが拒否されてしまいました。アクセス権に問題があることが予想されます。

ホスト側の確認

ホスト側のフォルダの存在確認とアクセス権を確認します。Finderで見るのが簡単です。Finderでフォルダを選択して、「ファイル」メニューから「情報を見る」を選択します。「共有とアクセス権」を確認します。

「everyone」と「staff」が「読み出しのみ」、「自分」が「読み書き」になっていれば問題ありません。

そして、問題ありませんでした。

macOSのプライバシー設定

macOSのプライバシー設定で、以下の3つのフォルダはアプリ毎にアクセス許可を与える必要があります。

  • ダウンロード
  • 書類
  • デスクトップ

アプリをインストールして初めて上記のフォルダにアクセスしようとしたときに、OSが許可するかを確認するダイアログを表示します。そこで許可していないとアクセスできません。

確認するには、次のように操作します。

  1. アップルメニューから「システム環境設定」を選択する。
  2. 「セキュリティとプライバシー」をクリックする。
  3. 「プライバシー」タブを選択する。
  4. 「ファイルとフォルダ」を選択する。

スクリーンキャプチャの通りデスクトップフォルダのチェックが外れていました。

今回はたまたま、デスクトップフォルダで作業していました。

覚えてはいないですが、外していたようです。

最新情報をチェックしよう!
スポンサーリンク
>現役のプログラマーが書くプログラミング情報

現役のプログラマーが書くプログラミング情報

日々の開発の中での学びや分かったこと、調べたことなどを書いていくブログです。

CTR IMG