問題を説明します。
rsfile.keyが必要です。
mkdir keys
openssl rand -base64 768 > rsfile.key
rskey.file
権限が公開されすぎると、MongoDBは起動しません。 rskey.fileをDockerに移動する必要があるため、Dockerはrskey.fileにアクセスする必要があります。まず、chmod 600を設定します。
sudo chmod 600 ./keys/
これはうまくいきません。 MongoDBは権限が開いているので操作を拒否します。おそらく所有権のためですか? MongoDBは通常Dockerコンテナで999を使用します。
sudo chown 999:999 ./keys/rsfile.key
これにより、MongoDBはファイルにアクセスできますが、Dockerはより曖昧な権限でファイルをコンテナに移動できません。そうしないと、chown 999:999
MongoDBはファイルにアクセスできませんが、Dockerはファイルをコンテナに移動できます。
ファイルの代わりにフォルダの所有権を設定し、Dockerにフォルダをコンテナに移動させると、
sudo chmod 0444 ./keys/
再び動作しません。 DockerのMongoDBは読み取り専用フォルダ内のファイルを読み取ることができません。
#!/bin/bash
mkdir keys
openssl rand -base64 768 > rsfile.key
sudo cp rsfile.key ./keys/rsfile.key
sudo chmod 0444 ./keys/
sudo chown 999:999 ./keys/rsfile.key
# Start MongoDB service
docker-compose up -d
mongodb:
container_name: mongodb
...
volumes:
- ./container-data/mongo/db:/data/db
- ./keys/:/etc/mongodb/pki/
ここで何をすべきですか?
答え1
ディレクトリは次からアクセスできる必要があります。
chmod 700 keys
これにより、コンテナ内にキーファイルが表示されます。その後、ファイル自体の権限を制限する必要があります。
chmod 600 keys/rsfile.key
Dockerはファイルを移動またはコピーせず、含まれているボリュームをマウントしてコンテナでそのファイルを使用できるようにします。