2015-12-30 8 views
6

docker-compose を使用して開発環境を設定しようとしていて、コンテナにホストディレクトリへのアクセス権がないようです これは、メートルボリューム内のフォルダを変更しようとする 面倒なタスクの実行時にこのエラーを取得:docker-composeでホストディレクトリへのアクセス許可を追加

app_1     | Warning: Unable to delete ".tmp" file (EACCES, permission denied '.tmp'). Use --force to continue. 

は、ここに私のドッキングウィンドウのファイルです:

FROM node:0.10 

RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 

RUN apt-get update \ 
    && apt-get install -y --no-install-recommends ruby-sass \ 
    && rm -rf /var/lib/apt/lists/* \ 
    && apt-get clean -y \ 
    && apt-get autoremove -y 

RUN npm install -g grunt-cli bower 

RUN groupadd -r node \ 
&& useradd -r -m -g node node 

RUN chown -R node:node /usr/src/app 

USER node 

EXPOSE 8080 

と私のドッキングウィンドウ-コンファイル:

app: 
    build: . 
    dockerfile: Dockerfile.dev 
    ports: 
    - "9000:9000" 
    env_file: 
    - ./server/config/env/development.env 
    volumes: 
    - ./:/usr/src/app:Z 
    command: bash -c "npm install && bower install && grunt dev && npm start" 

db: 
    ports: 
    - "27017:27017" 
  • 私が使用しています7240ff3
  • 注構築し、ドッキングウィンドウ・コンバージョン1.5.2でのUbuntu 15.10を実行している:それはちょうど、ファイルのパーミッションのことだZ許可
+0

まあ、あなたは権限を設定しますが、一番上にボリュームをマウントします。権限は異なります。 –

+0

しかし、権限はノードvs rootと関係しているようですが、USERノード行を削除しても機能しますか? –

+0

@AdrianMouat - mkdir行を削除しようとしましたが、重複していると思いますが、私のアクセス許可が壊れているとは限りません。同じエラーが表示されます。 編集したDockerfileへの要点:https://gist.github.com/avif/a7a99b14a6abca6157e6 ノードユーザーの関連する行を削除しようとしましたが、これは動作しましたが(!)、今ではアプリケーションが私の実働環境設定とは異なるルートユーザーを使用しています - 最初はドッカーを使用しています。 .. 要注意Dockerfile:https://gist.github.com/avif/c26d7a389aad11e8e69d ありがとう、少なくとも今問題はノードユーザーに隔離されています –

答えて

2

を。

最初に気づくべきことは、マウントしているボリュームが、作成したフォルダとDockerfileでchownする権限が異なることです。ノードユーザーはおそらくこのフォルダにアクセスする権限を持っていません。

$ docker run -u root -v $(pwd):/usr/src/app:Z my_app_image chown -R node:node /usr/src/app 

これを実行すると、ホスト上のフォルダのアクセス権が変更されます。

npm install && bower installを実行するにはルートにする必要がある場合は、rootユーザーをデフォルトユーザーのままにして、ノードユーザーに変更してアプリケーションを実行します。何かのように:ここで

npm install && bower install && gosu node npm start 

私はあなたがイメージにインストールする必要がありますgosuツールを使用しました。それは第二のプロセスを開始しないので、sudoより少し良いです。

+0

最初のコマンドは、rootユーザーでdockerイメージを実行し、/ user/src/appフォルダーをそのユーザーにアクセス許可でマウントします。 次に、chownコマンドを使用してフォルダーに対するノードユーザーのアクセス権を付与します同じように。 これは私のためには機能しませんでしたが、ノードユーザーにはまだパーミッションはありません。 これはドッカーの作成で私の試みの要点です:https://gist.github。com/avif/8cf231ebda​​31cba379f9 Dockerファイルにrootユーザーを残しました –

+0

selinuxを無効にすると機能しますか? –

+0

いいえ、無効になっているselinuxは効果がありません –

関連する問題