2016-03-20 29 views
4

ローカルドッカーマシンのVM経由でOSX 10.11でDocker 1.8.1を実行しています。Dockerコンテナのボリュームの権限が正しくありません

私は、次のドッキングウィンドウ-compose.ymlを持っている:docker-compose upすべてが正常に動作して、私はすべてを実行すると

FROM alpine 

# install nginx and php 
RUN apk add --update \ 
    nginx \ 
    php \ 
    php-fpm \ 
    php-pdo \ 
    php-json \ 
    php-openssl \ 
    php-mysql \ 
    php-pdo_mysql \ 
    php-mcrypt \ 
    php-ctype \ 
    php-zlib \ 
    supervisor \ 
    wget \ 
    curl \ 
    && rm -rf /var/cache/apk/* 

RUN mkdir -p /etc/nginx && \ 
    mkdir -p /etc/nginx/sites-enabled && \ 
    mkdir -p /var/run/php-fpm && \ 
    mkdir -p /var/log/supervisor && \ 
    mkdir -p /srv/cms 

RUN rm /etc/nginx/nginx.conf 
ADD nginx.conf /etc/nginx/nginx.conf 
ADD thunder.conf /etc/nginx/sites-enabled/thunder.conf 

ADD nginx-supervisor.ini /etc/supervisor.d/nginx-supervisor.ini 

WORKDIR "/srv/cms" 
VOLUME "/srv/cms" 

EXPOSE 80 
EXPOSE 8080 
EXPOSE 22 

CMD ["/usr/bin/supervisord"] 

、私のボリュームがで​​マウントされています

web: 
    build: docker/web 
    ports: 
     - 80:80 
     - 8080:8080 
    volumes: 
     - $PWD/cms:/srv/cms 

私Dockerfileは、このようになります正しい場所。

しかし、マウントされたフォルダ/ srv/cmsの権限は正しく表示されません。コンテナ内のユーザは「1000」であり、グループは「50」である。 Webサーバーは、ユーザー "root"で実行されるため、このフォルダにファイルを作成できませんでした。

+0

'root'で実行すると、任意のフォルダに書き込むことができるはずです。スーパバイザ設定で別のユーザが指定されていますか。 'uid 1000'と' gid 50'はあなたのOS X上でユーザーですか? –

答えて

5

1)一般的なアイデア:ドッカーそれはバゲントではありません。 2つの異なるサービスを1つのコンテナに入れるのは間違いです!それを2つの異なる画像に分割してリンクします。このくそイメージをしないでください。

チェックし、あなたがそれを行う場合は、コンテナ

  • あたりの実行プロセスが1つだけ層
  • の数を最小限にし、不要なパッケージをインストールhttps://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/

    • 避け
    • に従ってください:

      • デフォルトの画像を使用してコンフィグをマウントするのに十分ですnginxのため

        FROM alpine 
        
        RUN apk add --update \ 
            wget \ 
            curl 
        RUN apk add --update \ 
            php \ 
            php-fpm \ 
            php-pdo \ 
            php-json \ 
            php-openssl \ 
            php-mysql \ 
            php-pdo_mysql \ 
            php-mcrypt \ 
            php-ctype \ 
            php-zlib 
        RUN usermod -u 1000 www-data 
        RUN rm -rf /var/cache/apk/* 
        
        EXPOSE 9000 
        

        :あなたは、それは(例)のようなものであるべき層

      の数を減らすことができ、あなたの上司

    • を削除します。以下のような ドッキングウィンドウ-コンファイル:

      nginx: 
          image: nginx 
          container_name: site.dev 
          volumes: 
          - ./myconf1.conf:/etc/nginx/conf.d/myconf1.conf 
          - ./myconf2.conf:/etc/nginx/conf.d/myconf2.conf 
          - $PWD/cms:/srv/cms 
          ports: 
          - "80:80" 
          links: 
          - phpfpm 
      phpfpm: 
          build: ./phpfpm/ 
          container_name: phpfpm.dev 
          command: php5-fpm -F --allow-to-run-as-root 
          volumes: 
          - $PWD/cms:/srv/cms 
      

      2) それは許可を得て、問題を修正する、PHPのコンテナのDockerfileにRUN usermod -u 1000 www-dataを追加します。

    +1

    アルパインは、「usermod」をそのまま使用することはできません。 'testing'ブランチから' shadow'パッケージをインストールする必要があります。 –

    関連する問題