2016-04-22 16 views
2

私はMacOSX 10.11を実行しています。私は最近すべてのプロジェクトをドッキングしてみました。DockerとMac OSXの権限問題

docker-composeを使用してmongoDB + NodeJSアプリケーションを実行しようとすると、問題が発生します。だから、基本的に私は私のファイルを持続しますボリューム専用の容器を持って

version: '2' 
services: 
    mongodata: 
    image: mongo:latest 
    volumes: 
     - "${APP_DB}:/data" 
    command: "--break-mongo" 
    mongo-app: 
    image: mongo:latest 
    volumes_from: 
     - "mongodata" 
    expose: 
     - "27017" 
    ports: 
     - "27017:27017" 
    command: "--smallfiles --dbpath /data" 
    web: 
    build: . 
    volumes: 
     - .:/usr/src/app 
    ports: 
     - "3000:3000" 
    depends_on: 
     - mongo-app 
    links: 
     - mongo-app 
    environment: 
     - PORT=3000 

は、ここに私のドッキングウィンドウ・コンスクリプトです。その後、そのボリュームに基づいてmongoを実行し、NodeJSアプリケーションを実行します。

しかし、毎回私はTTOランアップドッキングウィンドウは、構成しようと、私は次のエラーを持っている:

mongo-app_1 | 2016-04-22T07:14:05.931+0000 I CONTROL [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data 64-bit host=4c43c9e20014 
mongo-app_1 | 2016-04-22T07:14:05.931+0000 I CONTROL [initandlisten] db version v3.2.5 
mongodata_1  | try 'mongod --help' for more information 
mongo-app_1 | 2016-04-22T07:14:05.932+0000 I CONTROL [initandlisten] git version: 34e65e5383f7ea1726332cb175b73077ec4a1b02 
mongo-app_1 | 2016-04-22T07:14:05.932+0000 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013 
mongo-app_1 | 2016-04-22T07:14:05.932+0000 I CONTROL [initandlisten] allocator: tcmalloc 
mongo-app_1 | 2016-04-22T07:14:05.932+0000 I CONTROL [initandlisten] modules: none 
mongo-app_1 | 2016-04-22T07:14:05.933+0000 I CONTROL [initandlisten] build environment: 
mongo-app_1 | 2016-04-22T07:14:05.933+0000 I CONTROL [initandlisten]  distmod: debian71 
mongo-app_1 | 2016-04-22T07:14:05.933+0000 I CONTROL [initandlisten]  distarch: x86_64 
mongo-app_1 | 2016-04-22T07:14:05.933+0000 I CONTROL [initandlisten]  target_arch: x86_64 
mongo-app_1 | 2016-04-22T07:14:05.934+0000 I CONTROL [initandlisten] options: { storage: { dbPath: "/data", mmapv1: { smallFiles: true } } } 
mongo-app_1 | 2016-04-22T07:14:05.947+0000 I -  [initandlisten] Detected data files in /data created by the 'mmapv1' storage engine, so setting the active storage engine to 'mmapv1'. 
mongo-app_1 | 2016-04-22T07:14:05.958+0000 W -  [initandlisten] Detected unclean shutdown - /data/mongod.lock is not empty. 
mongo-app_1 | 2016-04-22T07:14:05.959+0000 I STORAGE [initandlisten] exception in initAndListen: 98 Unable to create/open lock file: /data/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating 
mongo-app_1 | 2016-04-22T07:14:05.964+0000 I CONTROL [initandlisten] dbexit: rc: 100 

限り、私はそれが唯一のMacOSX上で起こっている知っているように、私はCHOWN + CHMODに/ dataフォルダを試みたが、ボリュームがマウントされたら、コンテナ内でCHOWNを実行することはできず、何もしないことを確認することができるというスレッドを見ました。しかし、ドッカー作成ファイルを使用しているので、ボリュームをマウントする前にはできません。 アイデアはありますか?

答えて

1

MacOSでdocker-machineを使用すると、ホームホストディレクトリ内でのみボリュームをバインドできます。他のディレクトリはVBoxで共有されているフォルダにないため動作しません。あなたはVBoxManageを使用して、ユーザーの家の外であなたのフォルダを共有することができます。この問題について https://www.virtualbox.org/manual/ch08.html#vboxmanage-sharedfolder

さらに詳しい情報:

https://github.com/docker/machine/issues/1826

+0

実際には$ {APP_DB}は私のホームディレクトリ内にあるが、それでも、それが動作していませんよ。 ... – Sanduckhan

+0

それ以上の考え? – Sanduckhan

0

をあなたが実際にあなたのホストシステムからのデータディレクトリをマウントする必要がありますか?データフォルダにコンテナボリュームを使用できませんか?

情報は引き続きコンテナに保存されます。

例:

version: '2' 
volumes: 
    mongo_data: {} 
services: 
    mongo-app: 
    image: mongo:latest 
    volumes: 
     - mongo_data:/data/db 
    expose: 
     - "27017" 
    ports: 
     - "27017:27017" 
    command: "--smallfiles --dbpath /data/db" 

出典:

+0

私はなぜ私がそれをしようとしている私のホスト上に重要なバックアップを持っていますが、それをインポートする信頼できる方法を見つける場合は、あなたは正しいです... – Sanduckhan

+0

ボリュームを別のパスにマッピングしようとしましたdockerを使ってコンテナを作成する - mongo-app bashを実行し、ファイルを目的の場所にコピーしますか? ファイルがホスト共有ボリュームにない場合は、実際にアクセス権と所有権を変更できます。 –

+0

これはうまくいきません。mongodataコンテナを削除しない限り、nodejsは新しいvolumes_fromの場所で更新されません。 – Sanduckhan