1. ホーム
  2. docker

[解決済み] Docker-compose マウントされたボリュームにユーザーとグループを設定する

2022-05-15 03:36:04

質問

docker-composeでapacheのイメージにボリュームをマウントしようとしています。問題は、私のドッカー内のapacheは、以下の場所で実行されていることです。 www-data:www-data の下で実行されていますが、マウントされたディレクトリは root:root . マウントされたディレクトリのユーザーを指定するにはどうしたらよいですか?

コマンドを実行しようとしたのですが setupApacheRights.sh . chown -R www-data:www-data /var/www と表示されますが chown: changing ownership of '/var/www/somefile': Permission denied

services:
    httpd:
        image: apache-image
        ports:
            - "80:80"
        volumes:
            - "./:/var/www/app"
        links:
            - redis
        command: /setupApacheRights.sh

マウントするユーザを指定できるようにしたいです。方法はありますか?

どのように解決するのですか?

まず www-data ユーザーの uid を決定します。

$ docker exec DOCKER_CONTAINER_ID id
uid=100(www-data) gid=101(www-data) groups=101(www-data)

次に、dockerホスト上で、uid(この例では100)を使ってマウントしたディレクトリの所有者を変更します。

chown -R 100 ./

ダイナミックエクステンション

もし、あなたが docker-compose を使うなら、このようにした方がいいかもしれません。

$ docker-compose exec SERVICE_NAME id
uid=100(www-data) gid=101(www-data) groups=101(www-data)
$ chown -R 100 ./

ワンライナーで入れることができます。

$ chown -R $(docker-compose exec SERVICE_NAME id -u) ./

-u フラグは uid を標準出力に出力します。

編集:CLIフラグのケーシングミスを修正しました。jcalfee314 さんありがとうございます。