2017-11-21 19 views
0

私は、マルチライセンスのElastic Beanstalk構成にLaravelアプリケーションを配備しています。アプリケーションコードはzipファイルにパッケージ化され、展開の一環としてアップロードされ、PHP-FPM Dockerコンテナにマウントされます。コンテナは正しく実行され、コードはマウントされますが、マウントされたすべてのディレクトリはrootによって所有されているため、アプリケーションはこれらのディレクトリに書き込むことができません(ログファイル、フレームワークファイルなどに必要です)。私はその後、docker exec -it container_id bashを実行し、私はすべてのファイル/ディレクトリがrootによって所有されて見ることができますls -laを実行して、私は手動でSSH場合EC2インスタンス上www-dataAWS Elastic Beanstalkは、マウントされたディレクトリのパーミッションを変更します。

によって所有されるようにそれらを必要とします。 chown -R www-data: storage vendorを実行すると、アプリケーションは正常に動作します。

したがって、の中にあるのphp-fpmコンテナの権限を変更する方法を見つける必要があります。

私は.ebextensions/permissions.config

container_commands: 
    01_change_storage_permissions: 
    # Get the php fpm container ID and change permissions on the mounted directories 
    command: sudo docker exec $(sudo docker ps -aqf "name=php-fpm") chown -R www-data:www-data storage vendor bootstrap 

を次のコマンドを試してみました展開が成功したので、私は正常に実行されたコマンドを取ることができるが、残念ながら、コンテナへのログイン時にようにパーミッションを変更していないようですディレクトリはまだルートによって所有されています

答えて

1

hereのように、インストールする前にディレクトリをchownにすることができます。簡単な概要:

あなたがDockerfileをコントロールしている場合、あなたはHOST_UID=$(id -u)を実行し、HOST_GID=$(id -g)とDockerfileを生成し、以下の二つのコマンドで$HOST_GID$HOST_UID拡大:

RUN groupadd -g $HOST_GID mygroup 
RUN useradd -l -u $HOST_UID -g mygroup myuser 

IDの中に充満して生成されたDockerfileを使用しますあなたのイメージを構築する。

ドッカーファイルを制御しない場合、here’s a container pattern for assigning the userid/groupid at runtime in a way that’s easily portable.

関連する問題