|
| 1 | +# For why we separate so many docker layers by performing multiple RUN and COPY, please see |
| 2 | +# https://docs.docker.com/develop/develop-images/dockerfile_best-practices/ |
| 3 | +# https://www.ginkgobioworks.com/2020/05/18/optimizing-your-dockerfile/ |
| 4 | + |
| 5 | +FROM base-php-fpm:php82 as base |
| 6 | + |
| 7 | +COPY ./docker/php/www.conf /usr/local/etc/php-fpm.d/www.conf |
| 8 | +RUN chmod 644 /usr/local/etc/php-fpm.d/www.conf |
| 9 | + |
| 10 | +FROM base as composer-install |
| 11 | + |
| 12 | +COPY --chown=www-data:www-data ./composer.json /var/www/project/composer.json |
| 13 | +COPY --chown=www-data:www-data ./composer.lock /var/www/project/composer.lock |
| 14 | + |
| 15 | +USER www-data |
| 16 | +RUN COMPOSER_MEMORY_LIMIT=-1 composer install |
| 17 | +USER root |
| 18 | + |
| 19 | +FROM base as copy-volume |
| 20 | + |
| 21 | +COPY --chown=www-data:www-data ./ /var/www/project |
| 22 | + |
| 23 | + |
| 24 | +FROM base as env-file |
| 25 | + |
| 26 | +RUN mkdir -p shop-env-config |
| 27 | +RUN touch shop-env-config/.env |
| 28 | + |
| 29 | +RUN chown www-data:www-data /var/www/project/shop-env-config/.env |
| 30 | + |
| 31 | + |
| 32 | +# ---------------- Debug ----------------- # |
| 33 | + |
| 34 | +FROM base as debugging |
| 35 | + |
| 36 | +RUN install-php-extensions xdebug |
| 37 | + |
| 38 | +# debug settings |
| 39 | +RUN mkdir -m 777 -p .debug |
| 40 | +RUN chown www-data:www-data .debug |
| 41 | + |
| 42 | +# Travis should have the same ini setup as live prod |
| 43 | +COPY ./docker/php/php-fpm-ini.ini /usr/local/etc/php/conf.d/999-overrides.ini |
| 44 | + |
| 45 | +COPY --from=composer-install /var/www/project . |
| 46 | +COPY --from=env-file /var/www/project . |
| 47 | +COPY --from=copy-volume /var/www/project . |
| 48 | + |
| 49 | +# Bind mount location |
| 50 | +VOLUME ["/var/www/project"] |
| 51 | + |
| 52 | +CMD php-fpm |
| 53 | + |
| 54 | + |
| 55 | +# ---------------- CI ----------------- # |
| 56 | + |
| 57 | +FROM base as image-ci-testing |
| 58 | + |
| 59 | +# Travis should have the same ini setup as live prod |
| 60 | +COPY ./docker/php/php-fpm-ini.ini /usr/local/etc/php/conf.d/999-overrides.ini |
| 61 | + |
| 62 | +COPY --from=composer-install /var/www/project . |
| 63 | +COPY --from=env-file /var/www/project . |
| 64 | +COPY --from=copy-volume /var/www/project . |
| 65 | + |
| 66 | +# Bind mount location |
| 67 | +VOLUME ["/var/www/project"] |
| 68 | + |
| 69 | +CMD php-fpm |
0 commit comments