2017-09-05 3 views
0

基本的なドッキング・コンテナを持っています。ドッキング・コンポジット(バージョン3)を使用して基本LAMPスタックを構築しています。
ドッカーコンテナ内に作成されたファイルは、常にrootによって所有されているため、ローカルで編集することはできません。
私はローカルユーザと同じuidを持つコンテナwww-dataユーザを設定しようとしましたが、動作しますが、新しいファイルはrootによって作成されます。
ローカルで編集できるファイルをコンテナに作成するにはどうすればよいですか?Docker - ルートではなくwww-データとして新しいファイルを作成します。

私の作成ファイル。

version: "3" 

services: 
    webserver: 
     build: 
      context: ./docker/containers/webserver 
     container_name: 'apache7.1-webserver' 
     restart: 'always' 
     ports: 
      - "80:80" 
      - "443:443" 
     links: 
      - mysql 
     volumes: 
      - ${DOCUMENT_ROOT}:/var/www/html 
      - ${PHP_INI}:/usr/local/etc/php/php.ini 
      - ${VHOSTS_DIR}:/etc/apache2/sites-enabled 
      - ${APACHE_LOG_DIR}:/var/log/apache2 
    mysql: 
     build: ./docker/containers/mysql 
     container_name: 'apache7.1-mysql' 
     restart: 'always' 
     ports: 
      - "3306:3306" 
     volumes: 
      - ${MYSQL_DATA_DIR}:/var/lib/mysql 
      - ${MYSQL_LOG_DIR}:/var/log/mysql 
     environment: 
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} 
      MYSQL_DATABASE: ${MYSQL_DATABASE} 
      MYSQL_USER: ${MYSQL_USER} 
      MYSQL_PASSWORD: ${MYSQL_PASSWORD} 
    redis: 
     container_name: 'apache7.1-redis' 
     image: redis:latest 
     ports: 
      - "6379:6379" 

マイウェブサーバーDockerfile;

FROM php:7.1-apache 

# Get any build argument overrides 
ARG APP_UID 
ARG APP_GID 

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer 

RUN apt-get clean -y \ 
    && apt-get update -y \ 
    && apt-get install -y \ 
     g++ \ 
     locales \ 
     libxml2-dev \ 
     php-soap \ 
     zlib1g-dev \ 
     libicu-dev \ 
     libfreetype6-dev \ 
     libjpeg62-turbo-dev \ 
     libpng12-dev \ 
     libmcrypt-dev \ 
     libpng12-dev \ 
     libcurl4-openssl-dev \ 
     libxml2-dev \ 
     nano \ 
    && apt-get clean -y 

RUN docker-php-ext-install mysqli mbstring zip intl mcrypt curl json 
RUN docker-php-ext-install iconv xml xmlrpc 

RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ 
    && docker-php-ext-install -j$(nproc) gd 

# Add any required locales here and restart php-fpm, note that some locales do not include currencies such as EURO, if 
# this is the case then they will need to be generated in addition to main locale 
RUN sed -i -e 's/# en_GB.UTF-8 UTF-8/en_GB.UTF-8 UTF-8/' /etc/locale.gen \ 
    && sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen \ 
    && sed -i -e 's/# pt_BR.UTF-8 UTF-8/pt_BR.UTF-8 UTF-8/' /etc/locale.gen \ 
    && sed -i -e 's/# de_AT.UTF-8 UTF-8/de_AT.UTF-8 UTF-8/' /etc/locale.gen \ 
    && sed -i -e 's/# [email protected] ISO-8859-15/[email protected] ISO-8859-15/' /etc/locale.gen \ 
    && sed -i -e 's/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/' /etc/locale.gen \ 
    && sed -i -e 's/# fr_FR.UTF-8 UTF-8/fr_FR.UTF-8 UTF-8/' /etc/locale.gen \ 
    && dpkg-reconfigure --frontend=noninteractive locales \ 
    && kill -USR2 1 

RUN pecl install redis-3.1.2 \ 
    && pecl install xdebug-2.5.0 \ 
    && docker-php-ext-enable redis xdebug 

# Enable apache modules 
RUN a2enmod rewrite headers 

# Change www-data user to match the host system UID and GID and chown www directory 
RUN usermod --non-unique --uid 1000 www-data \ 
    && groupmod --non-unique --gid 1000 www-data \ 
    && chown -R www-data:www-data /var/www 

答えて

1

あなたはUSERディレクティブhttps://docs.docker.com/engine/reference/builder/#userをユーザに設定することができます。

たとえば、DockerfileにUSER 1000またはUSER www-dataを追加する必要があります。

+0

私は1000を(そしてwww-データ)に設定しています。私がこれを行うと、コンテナは起動しません – Rooneyl

+0

何がエラーですか? –

+0

(13)アクセスが拒否されました:AH00072:make_sock:アドレス0.0.0.0:80にバインドできませんでした リスニングソケットがありません。シャットダウン – Rooneyl

関連する問題