|
| 1 | +ARG PHP_VERSION=8.1.2 |
| 2 | +FROM php:${PHP_VERSION}-fpm-buster as php |
| 3 | +SHELL ["/bin/bash", "-o", "pipefail", "-c"] |
| 4 | +ENV PATH="/usr/local/docker/bin:${PATH}" |
| 5 | +ENV PHP_VERSION=${PHP_VERSION} |
| 6 | +ENV PORT=8080 |
| 7 | +ENV DOCUMENT_ROOT=/app/html |
| 8 | + |
| 9 | +ENV COMPOSER_VERSION=2.0.11 |
| 10 | +ENV SUPERVISORD_VERSION=0.6.3 |
| 11 | +ENV DOCKERIZE_VERSION=2.1.0 |
| 12 | +# https://github.com/grpc/grpc/issues/13412 |
| 13 | +ENV GRPC_ENABLE_FORK_SUPPORT=1 |
| 14 | +ENV GRPC_POLL_STRATEGY=epoll1 |
| 15 | +# keep wp-cli happy |
| 16 | +ENV PAGER=cat |
| 17 | + |
| 18 | +# workaround for https://github.com/docker-library/php/issues/924 |
| 19 | +ENV PHP_OPENSSL=yes |
| 20 | + |
| 21 | +# configure composer |
| 22 | +ENV COMPOSER_CACHE_DIR=/var/lib/composer/cache |
| 23 | +ENV COMPOSER_HOME=/var/lib/composer |
| 24 | +ENV COMPOSER_NO_INTERACTION=1 |
| 25 | + |
| 26 | +# install openresty and minimal requirements |
| 27 | +RUN set -ex \ |
| 28 | + && apt-get update \ |
| 29 | + && apt-get install --no-install-recommends -y gnupg \ |
| 30 | + && curl -s https://openresty.org/package/pubkey.gpg | apt-key add - \ |
| 31 | + && echo "deb http://openresty.org/package/debian stretch openresty" > /etc/apt/sources.list.d/openresty.list \ |
| 32 | + && apt-get update \ |
| 33 | + && apt-get install --no-install-recommends -y \ |
| 34 | + msmtp unzip openresty=1.13* openresty-debug=1.13* libyaml-0-2 libyaml-dev \ |
| 35 | + less git openssh-client procps libmagickwand-dev \ |
| 36 | + # we need yaml support for installing extensions |
| 37 | + && pecl install yaml \ |
| 38 | + && docker-php-ext-enable --ini-name 50-docker-php-ext-yaml.ini yaml \ |
| 39 | + && apt-get autoremove --purge -y libyaml-dev \ |
| 40 | + && rm -rf /var/lib/apt/lists/* |
| 41 | + |
| 42 | +COPY docker/build-scripts /usr/local/docker/build-scripts/ |
| 43 | + |
| 44 | +RUN set -ex \ |
| 45 | + && apt-get update \ |
| 46 | + && mkdir -p ${COMPOSER_HOME} ${COMPOSER_CACHE_DIR} \ |
| 47 | + && chown www-data:www-data ${COMPOSER_HOME} ${COMPOSER_CACHE_DIR} \ |
| 48 | + && chmod 777 ${COMPOSER_HOME} ${COMPOSER_CACHE_DIR} \ |
| 49 | + && /usr/local/docker/build-scripts/install-composer \ |
| 50 | + && /usr/local/docker/build-scripts/install-dockerize \ |
| 51 | + && /usr/local/docker/build-scripts/install-supervisord \ |
| 52 | + && /usr/local/docker/build-scripts/install-php-extensions /usr/local/docker/build-scripts/php-extensions.minimal.yaml \ |
| 53 | + && rm -rf /var/lib/apt/lists/* /tmp/pear/* ${COMPOSER_CACHE_DIR:?}/* |
| 54 | + |
| 55 | +WORKDIR /app |
| 56 | +# prepare rootfs |
| 57 | +RUN set -ex \ |
| 58 | + # symlink generated php.ini |
| 59 | + && ln -sf /usr/local/docker/etc/php.ini /usr/local/etc/php/conf.d/zz-01-custom.ini \ |
| 60 | + # symlink php.ini from /app/config/php.ini |
| 61 | + && ln -sf /app/config/php.ini /usr/local/etc/php/conf.d/zz-90-app.ini \ |
| 62 | + # our dummy index |
| 63 | + && mkdir /app/html \ |
| 64 | + && { \ |
| 65 | + echo "<?php phpinfo(); "; \ |
| 66 | + } | tee /app/html/index.php >&2 \ |
| 67 | + && mkdir -p /var/lib/nginx/logs \ |
| 68 | + && ln -sf /dev/null /var/lib/nginx/logs/error.log \ |
| 69 | + && chown -R www-data:www-data /app \ |
| 70 | + && chown -R www-data:www-data /run \ |
| 71 | + && chown -R www-data:www-data /var/lib/nginx \ |
| 72 | + && chown -R www-data:www-data /var/www |
| 73 | + |
| 74 | +COPY --chown=www-data:www-data ./docker /usr/local/docker |
| 75 | +COPY --chown=www-data:www-data ./nginx-lua /usr/local/docker/lib/nginx/lua/ |
| 76 | +USER www-data:www-data |
| 77 | + |
| 78 | +STOPSIGNAL SIGTERM |
| 79 | +EXPOSE 8080 |
| 80 | +ENTRYPOINT ["/usr/local/docker/bin/docker-entrypoint"] |
| 81 | +CMD ["supervisord", "-c", "/usr/local/docker/etc/supervisor.conf"] |
0 commit comments