2016-10-10 3 views
0

私はドッカーの私のインストールで問題があります。私は私のdockerfile confの中で、この行を追加しますので、私はこのエラーを持っているDocker wrong permission apache2

front_1 | /var/lock/apache2 already exists but is not a directory owned by www-data. 
front_1 | Please fix manually. Aborting. 

RUN usermod -u 1000 www-data 

しかし、私はこの行を削除した場合、私はsymfony私は起動すると、私はこのエラーを持っアップドッキングウィンドウを-構成プロジェクトはドッカーでは機能しません。

あなたの問題を解決するための任意のアイデアがありますか?

敬具私はそれを見たよう

答えて

0

、あなたはホストマシンのユーザーUID(あなた)と同じIDを持つようにドッキングウィンドウ内のユーザ・WWW-データのUIDを変更しようとしているので、あなたがあなたのプロジェクトファイルを開くことができますIDE。

これは、同じユーザーではないため、自分のファイル(config、pid、...)を読むことができないapache2サービスにファイルアクセス権の問題をもたらします。

symfonyのプロジェクトファイルの所有者のみをUID 1000に変更し、グループ(GID)をwww-dataに変更することが、解決策です。これはdevマシンにのみ適用されます。それ以外の必要はありません。コンテナ内でコマンドを実行します。

docker内にいくつかのbashエイリアスを作成しておくことができます。

その他のオプションは、既存のファイルとフォルダをアクセス許可で設定するACLを使用することです。これは、指定されたフォルダの下に新しく作成されたファイルに継承されます。これはコンテナ内のブートストラップスクリプトに置くことができます。 DEVモードのみです。あなたはchownを実行する必要はありませんこのように。

chown -R 1000:www-data /home/project #set for existing files 
/usr/bin/setfacl -R -m u:www-data:rwx -m u:0:rwx -m u:1000:rwx /home/project 
/usr/bin/setfacl -dR -m u:www-data:rwx -m u:0:rwx -m u:1000:rwx /home/project 

-mは、異なるユーザのためのものです。最初はwww-data(apache2)、2番目は0(root)、3番目は1000(you)です。

UIDはいつでも変更できます。このため、ユーザーが適切なUIDを持っていないと、セキュリティホールが発生する可能性があります。 2番目の方法は、apache2がアクセス権(アップロードされたファイル、キャッシュなど)を設定するが、ホストユーザーはこれらのファイルにアクセスする必要があるフォルダに対してのみ使用されます。