これdocker-compose.yml
:
services:
database:
image: mongo:3.2
ports:
- "27017"
command: "mongod --dbpath=/usr/database"
networks:
- backend
volumes:
- dbdata:/usr/database
volumes:
dbdata:
このエラーが発生します(抜粋):
database_1 | 2016-11-28T06:30:29.864+0000 I STORAGE [initandlisten] exception in initAndListen: 98 Unable to create/open lock file: /usr/database/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
そのイメージを直接使用してコンテナーでコマンドを実行しようとするだけの場合も同様です。
$ docker run -v /usr/database mongo:3.2 mongod --dbpath=/usr/database
しかし、/bin/bash
コンテナーの開始時に実行して THEN startを実行すると、mongo
問題ありません。
$ docker run -it -v /usr/database mongo:3.2 /bin/bash
root@8aab722fad89:/# mongod --dbpath=/usr/database
出力に基づくと、違いは、2 番目のシナリオでは、コマンドが root として実行されることです。
だから、私の質問は次のとおりです。
- 他の方法は機能しないのに、なぜこの方法は機能するの
/bin/bash
でしょうか? - docker-compose でその理由を再現するにはどうすればよいですか?
注:OSXでは、Mongoが使用するボリュームとしてホストディレクトリをマウントできるかどうかに影響するように見えるため、私はそうしていません。