Linux上のDockerコンテナで開発する場合、ホストとコンテナ間のファイルの所有権とアクセス権を管理する権限に問題があります。Dockerコンテナで開発するときにどのようにパーミッションを管理しますか?
私はUbuntuとApacheサーバーを実行するDockerイメージがあるとします。 (最近のバージョンの)Apacheのデフォルト設定を使用すると、ドキュメントルートは/var/www/html
となり、Apacheはwww-data
ユーザーとして実行されます。
いくつかの開発を行うために、Docker経由でドキュメントルートを-v /path/to/my/files:/var/www/html
で公開します。これが問題の発生場所です。
/path/to/my/files
のファイルは、www-data
というコンテナによって所有されています。私が運が良ければ、ホストにwww-data
のユーザーがいると、そのユーザーになります。それ以外の場合は、コンテナのローカルな別個のユーザーになります。これらのファイルのアクセス許可は、おそらく0755
になります。
自分自身(jsmith
というユーザー)として働いているとき、不正なファイルアクセス許可&の所有権のために、それらのファイルを編集することはできません。
私は
jsmith
へのファイルの所有権を変更することができ、それは、Apacheで問題が発生します - それは難しドキュメントルート内のファイルへのアクセスを持っています。許可を
0777
に変更できますが、自分の仕事の中で作成した新しいファイルはすべてjsmith
になります。
最終的には、開発ファイルに対する所有権&のアクセス権を常に調整する必要があります。他の人もこの問題を抱えているはずですが、開発ワークフローでDockerを使用するというトピックで見たすべての記事は、この問題を見落としています。
私はは解決策を持っているが、私はそれを完全に満足していない:私は/src/myproject
でフォルダを設定
。これは私の開発ファイルを保持し、
www-data:www-data
によって所有されています。 BindFS使用は、私が
jsmith:jsmith
に、~/myproject
でマッピングwww-data:www-data
を/src/myproject
をマウントします。これにより、私は~/myproject
のファイルを許可なしで編集することができます。Apache Dockerコンテナは
/src/myproject
ディレクトリに-v /src/myproject:/var/www/html
をマウントします。 Apacheはファイルの所有権をwww-data
と見て問題はありません。
これはうまくいきますが、あまりにも複雑です。他の人はどのようにしてこの問題を解決しますか?
他の方法でプレミアムの問題を修正しましたか? – Vail
申し訳ありません申し訳ありませんが提案はありません。私はここで同じ答えを探しに来ました。あなたのBindFSのヒントは私には役に立ちました。 – jdhildeb