2017-07-09 20 views
0

LEMPスタックに依存するアプリケーション用のDockerをセットアップしようとしています。この目的のために、Dockerを使ってNginx用に1つのコンテナ(PHP-FPM用、1つはMySQL用)を作成する予定です。DockerがNginx/PHP-FPM/Composer用に作成

これは、オンラインチュートリアルの基本的なイラストユースケースではうまくいきますが、私がユースケースに適用しようとすると、私は設計上の問題に苦しんでいます。

私のWebアプリケーションは、Composer for PHPに依存し、Gulp + BowerはCSS/JS依存関係に依存します(コンパイルや資産の最小化など)。

問題は、アプリケーションをビルド(つまり、すべての依存関係をインストールし、いくつかのgulpタスクを実行する)し、このビルドの結果をNginxとPHP-FPMの両方のコンテナに提供する必要があるということです。ここで

は、私がこれまでになってきたものです:

ドッキングウィンドウ-compose.yml:

version: "3" 

networks: 
    database: 
    server: 

volumes: 
    mysql-data: 
    source: 

services: 
    php: 
    build: . 
    volumes: 
     - source:/app:ro 
    restart: always 
    networks: 
     - database 
     - server 
    depends_on: 
     - mysql 

    mysql: 
    image: mysql:5.7 
    volumes: 
     - mysql-data:/var/lib/mysql 
    restart: always 
    networks: 
     - database 
    environment: 
     MYSQL_ROOT_PASSWORD: rootpassword 
     MYSQL_USER: test 
     MYSQL_PASSWORD: test 
     MYSQL_DATABASE: test 

    nginx: 
    image: nginx 
    volumes: 
     - source:/app:ro 
    restart: always 
    networks: 
     - server 
    depends_on: 
     - php 

Dockerfile:

FROM php:7.1-fpm 
WORKDIR /app 

# Install dependencies 
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - 
RUN apt-get update && apt-get install -y \ 
    git \ 
    nodejs \ 
    zip 
RUN curl -sL https://getcomposer.org/installer | php -- --install-dir /usr/bin --filename composer 

# Get application dependencies 
COPY composer.json ./ 
RUN composer install -o 

COPY package.json gulpfile.js bower.json ./ 
RUN npm install 
RUN npm run gulp 
RUN npm run rev 

# Copy application 
COPY . ./ 

しかし、ドッカー初心者として、私はアプリケーションのビルド結果のボリュームに頼ることが妥当ではないか、ビルドのステップアプリケーションを実行しているコンテナの1つ。

ご協力いただきありがとうございます。

ニコラス

答えて

0

PHP7-FPMのためにこれを見て - nginxの - MySQLの - ELK:https://github.com/maxpou/docker-symfony そして、このコンテナの管理:ノード/ガルプ

/php7-とhttps://portainer.io

マイカスタム]ドッキングウィンドウのファイルをfpm/Dockerfile

FROM php:7.0-fpm 

RUN apt-get update && apt-get install -y \ 
    git \ 
    unzip \ 
    wget \ 
    ntp 

RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - 
RUN apt-get install -y nodejs 
RUN npm config set registry "http://registry.npmjs.org/" 
RUN npm install -g gulp bower 

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

# Set timezone 
RUN rm /etc/localtime 
RUN ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime 
RUN "date" 

# Type docker-php-ext-install to see available extensions 
RUN docker-php-ext-install pdo_mysql 

RUN apt-get update && apt-get install -y \ 
     libfreetype6-dev \ 
     libjpeg62-turbo-dev \ 
     libmcrypt-dev \ 
     libpng12-dev \ 
    && docker-php-ext-install -j$(nproc) iconv mcrypt \ 
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ 
    && docker-php-ext-install -j$(nproc) gd 

# install xdebug 
#RUN pecl install xdebug 
#RUN docker-php-ext-enable xdebug 
#RUN echo "error_reporting = E_ALL" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini 
#RUN echo "display_startup_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini 
#RUN echo "display_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini 
#RUN echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini 
#RUN echo "xdebug.remote_connect_back=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini 
#RUN echo "xdebug.idekey=\"PHPSTORM\"" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini 
#RUN echo "xdebug.remote_port=9001" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini 

RUN apt-get update \ 
    && apt-get -y install \ 
      libmagickwand-dev \ 
     --no-install-recommends \ 
    && pecl install imagick \ 
    && docker-php-ext-enable imagick \ 
    && rm -r /var/lib/apt/lists/* 

RUN echo "file_uploads = On\n" \ 
     "memory_limit = 500M\n" \ 
     "upload_max_filesize = 500M\n" \ 
     "post_max_size = 500M\n" \ 
     "max_execution_time = 600\n" \ 
     > /usr/local/etc/php/conf.d/uploads.ini 

RUN echo "realpath_cache_ttl = 7200\n" \ 
      "realpath_cache_size = 4M\n" \ 
     > /usr/local/etc/php/conf.d/opti-symfony.ini 

RUN echo "date.timezone=Europe/Paris" \ 
     > /usr/local/etc/php/conf.d/time-zone.ini 

RUN docker-php-ext-install opcache 

WORKDIR /var/www/symfony 

ハッピードッカー

1

しかし、ドッカー初心者として、私はアプリケーションのビルド結果のボリュームに依存する権利であることを確認していない、またはの1のビルド手順の一部を持っていますアプリケーションを実行するコンテナ

短い回答:これを処理する正しい方法は名前付きボリュームです。

以前のバージョンの作成では、volumes-fromオプションを使用して、別のコンテナ内の既存のボリュームを参照しました。これはv3では廃止され、正しく実装されているように見える名前付きボリュームに置き換えられています。私はvolumes-fromに言及します。なぜなら、ボリュームの意図を示すことは、コンテナ間のデータを永続させるために、名前の付いたボリュームの方がはるかに説明的ではないことを示す良い仕事だと思います。

関連する問題