Docker组成Nginx / PHP-FPM / Composer

我正在尝试依靠LEMP堆栈为我的应用程序设置Docker。 为此,我计划使用Docker组合来为Nginx生成一个容器,一个用于PHP-FPM,一个用于MySQL。

对于在线教程中的基本插图用例,这一切都运行良好,但是当我尝试将其应用到我的用例中时,我遇到了一个devise问题。

为了给出一些上下文,我的Web应用程序依赖于Composer for PHP依赖性和Gulp + Bower for CSS / JS依赖性(以及LESS编译,资产最小化等)。

问题是我需要构build应用程序(即安装所有依赖项并运行一些吞吐任务),并将此构build的结果提供给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 . ./ 

不过,作为一名Docker初学者,我不确定依靠卷来构build应用程序的结果还是让构build步骤成为运行应用程序的其中一个容器的一部分是正确的。

在此先感谢您的帮助或build议!

萨科

不过,作为一名Docker初学者,我不确定依靠卷来构build应用程序的结果还是让构build步骤成为运行应用程序的其中一个容器的一部分是正确的。

简短的回答:命名卷是处理这个问题的正确方法。

在以前的撰写版本中,您可以使用volumes-from选项来引用不同容器中的现有卷。 这在v3中已被弃用,被正在实施的命名卷取代。 我提到了volumes-from因为我认为它在展示卷的意图方面做得很好 – 在容器之间持久化数据 – 其中有名卷的描述性较小。

看看这个PHP7-FPM – NGINX – MySQL – ELK: https : //github.com/maxpou/docker-symfony这对于容器pipe理: https ://portainer.io

我用Node / Gulp自定义docker文件

/ PHP7-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 

如果你有错误给我们;)

快乐的docker工人