以下に私が投稿した回答。まだ自分の回答を受け入れることができません
私はチャット クライアントを開発中です。開発には、実際のサービスを起動するために調整して使用できる構成ファイルを作成するために「generate」コマンドを使用する docker セットアップを使用しています。デスクトップでは問題なく動作しますが、ラップトップの respberry または別の HDD で実行しようとすると、ビルド プロセスでファイル ハンドラー エラーが発生し、権限が拒否されたことが示されます。
私は完全な初心者かもしれませんが、ラップトップ上のフォルダーのマウントポイントの権限を変更し、ラズベリーパイにフォルダーの権限が設定されました。
Docker は、すべてのコマンドに対して sudo を入力しなくても実行できるように設定されています。
動作する設定ファイルと動作しない設定ファイルの権限コードは次のとおりです。
# Auto generated, working local
-rwxrwxrwx 1 root root 103443 <date> <filename>
# Auto generated not working pi and laptop
-rw-r--r-- 1 991 991 106030 <date> <filename>
ハードドライブを正しく設定していないだけでしょうか? デフォルトの OS パーティションにあるかどうかに関係なく、Pi でこのエラーが発生します。リバース プロキシを使用して Django を起動して問題なく提供できます。
私が構築しているチャット サービスは、matrix/synapse です。こちらは、基本的なセットアップを含む synapse サーバー リポジトリの docker フォルダーです。問題となるファイルは、以下から生成された homeserver.yml です。
docker-compose run --rm synapse generate
答え1
実際にはLinuxの権限の不正行為ではない
これは、複数のデバイスで発生していたため、最新の Synapse Docker リポジトリ プッシュによる副作用である可能性があります。Docker の手動セットアップの一部を自分で指定することで解決しました。この解決策は、他の構成関連の問題にも役立つ可能性があります。
解決しました。正確な解決策はおそらくより良い方法で適用できるでしょう
シナリオ:
設定を生成するシナプスシナプス用のDockerコンテナを作成するために使用するサーバー。目標は、 マトリックスクライアント。
問題:
構成 ('homeserver.yaml') の作成に成功した後、その構成を使用した synapse のビルドでは、ファイル (コンテナー内) を読み取れないことを示す python スタック トレースとともに Permission エラーがスローされ、結果service exit 1
と no が表示されますdocker logs service
。
解決:
これらの設定の一部は環境変数を使用して設定できます。Synapse の Readme を参照してください。 確認後マトリックス/シナプスdocker リポジトリに、最近頻繁な更新履歴があることに気づきました。システムがおかしくなったか、コンテナの最近の構成セットアップに問題があるかのどちらかです。そのため、通常は自動化されている作業の一部を自分で実行しました。
conf ('homeserver.yml') を使用して、synapse が使用するフォルダーを作成しました。バインド マウントを使用する場合 (リポジトリ ページにあるように)、docker ボリュームは次の場所にあります
/var/lib/docker/volumes/<name of bind mount>/_data
。ここで、media_store、uploads、logs を作成します。「homeserver.yml」で作成されたフォルダー名を探し、パスがそれらを指していることを確認します。
シナプス リポジトリのガイドラインに従って、デフォルトのグループと権限を割り当てました。
# UID & GID default to 991 chown 991:991 media_store/ uploads/ logs/
ログ設定ハンドラーをログフォルダーにポイントします。この構成を設定する時点ではログファイルは存在しません。ログハンドラーファイルは .log.config にあります。
handlers: file: filename: /data/logs/homeserver.log