2

PHP アプリケーションを実行しているコンテナーがありphp-fpm、Docker ボリュームによって提供されるフォルダー内にサービスがキャッシュ ファイルを書き込むことができません。

ホストマシンから、書き込む必要のあるフォルダーに777のアクセス許可を与えましたが、しばらくの間だけ機能します。によって作成されたファイルにphp-fpmは、必要な権限がありません。chownさらに、コマンドで所有者とグループを変更することはできません。

これは私のdocker-composer.ymlファイルです:

web:
    image: eduardoleal/nginx
    external_links:
        - proxy
    links:
        - php:php
    container_name: "app-web"
    environment:
        VIRTUAL_HOST: web.app
    volumes_from:
        - data 
    volumes:
        - ./src/nginx-vhost.conf:/etc/nginx/sites-enabled/default
php:
    image: eduardoleal/php56
    container_name: "app-web-php"
    volumes_from:
        - data
data:
    container_name: "app-web-data" 
    image: phusion/baseimage
    volumes:
        - /Users/eduardo.leal/Code/vidaclass/web:/var/www/public

VirtualBoxを使用してOSXでdockerを実行しています。

4

4 に答える 4

4

userMacOS には、ファイルをgroup所有することと、ファイルusergroup変更/読み取ることの違いにより、マウントに関する問題がいくつかあります。回避策として、Docker の次の手順を実行します (最新バージョンを使用することをお勧めします)。

$ brew install docker-machine-nfs
$ docker-machine start yourdockermachine
$ docker-machine-nfs yourdockermachine --shared-folder=/Users --nfs-config="-alldirs -maproot=0"

の名前はyourdockermachine好きなように変更できます。また、マップする共有フォルダーを変更することもできます。上記のオプションは最善の策であり、すべての場合に機能します。システムファイルをいじらないように、それを変更しないことをお勧めします。

上記の設定が完了したら、ファイルとフォルダーに適切な読み取り、書き込み、実行権限を付与してください。

: 上記の手順の依存関係はbrewdocker-machine(または簡単にするために完全な docker ツールボックス) です。

更新 1 : Docker for Mac Betaは非公開の招待段階にあります。xhyve Hypervisor上で Mac 上で Docker をネイティブに実行します。つまり、許可エラーがなくなり、パフォーマンスが向上します。

更新 2 : Docker for Macはパブリック ベータ版になりました。基盤となるテクノロジーはそのままで、VM は Docker サービスによって完全に管理されます。これを書いている時点でのバージョンは1.12.0-rc2、OS X とシームレスに動作し、docker-machine.

于 2016-03-21T05:44:36.397 に答える
3

私もこの問題を抱えていました。Docker マシンは、マウントされたボリュームでdockerユーザーとグループを使用します。構成を変更し、デフォルトのユーザー (だと思います) を、内部にあるユーザー名に置き換える必要があります container。そのようなユーザーがいない場合は、そのようなユーザーを作成する必要があります。で group に対して同じトリックを行います。それは非常に汚いハックですが、私はまだより良い解決策を見つけていません.staffUID=1000GID=50php-fpmnobodyUID=1000 GID=50

于 2016-03-18T19:31:08.543 に答える
2

RUN usermod -u 1000 www-dataeduardoleal/php56 イメージの Dockerfile に EXPOSE の前に追加すると、パーミッションの問題が修正されます。

于 2016-03-21T13:03:23.510 に答える
2

MacOSx を使用している場合。staff ユーザーの権限を変更する必要があります (このユーザーは docker によって作成されます)。デフォルトのスタッフ ユーザーのみの読み取り権限。そのため、Web サーバーは docker コンテナーのキャッシュ フォルダーに書き込むことができません。あなたは下の写真を見て見ることができます

Mac で chmod -R 777 cache_folder を実行します。

この回答がお役に立てば幸いです

とにかく、 docker-machine-nfs を使用してこの問題を解決することもできます

于 2016-03-19T17:01:09.470 に答える