stat-an/docker/php-fpm/Dockerfile

128 lines
2.6 KiB
Docker

ARG PHP_VERSION=8.4
FROM php:${PHP_VERSION}-fpm-alpine AS prod
ARG UID=1000
ARG GID=1000
ENV UID=${UID}
ENV GID=${GID}
ARG STABILITY="stable"
ENV STABILITY=${STABILITY}
ARG SYMFONY_VERSION=""
ENV SYMFONY_VERSION=${SYMFONY_VERSION}
ENV APP_ENV=prod
WORKDIR /var/www
RUN apk add postgresql postgresql-dev \
&& docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \
&& docker-php-ext-install pdo pdo_pgsql pgsql
RUN apk add --no-cache \
acl \
fcgi \
file \
gettext \
git \
;
RUN set -eux; \
apk update; \
apk add --no-cache --virtual .build-deps \
$PHPIZE_DEPS \
linux-headers \
icu-data-full \
icu-dev \
libzip-dev \
zlib-dev \
; \
\
docker-php-ext-configure zip; \
docker-php-ext-install -j$(nproc) \
intl \
zip \
sockets \
; \
pecl install \
apcu \
excimer \
; \
pecl clear-cache; \
docker-php-ext-enable \
apcu \
excimer \
opcache \
; \
\
runDeps="$( \
scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \
| tr ',' '\n' \
| sort -u \
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
)"; \
apk add --no-cache --virtual .app-phpexts-rundeps $runDeps; \
\
apk del .build-deps
COPY docker/php-fpm/ini/prod.ini /usr/local/etc/php/conf.d/local.ini
COPY docker/php-fpm/99-www-override.conf /usr/local/etc/php-fpm.d/99-www-override.conf
CMD ["php-fpm", "--nodaemonize"]
ENV COMPOSER_ALLOW_SUPERUSER=1
ENV PATH="${PATH}:/root/.composer/vendor/bin"
COPY --from=composer:2.8.9 /usr/bin/composer /usr/bin/composer
COPY composer.* symfony.* ./
RUN set -eux; \
if [ -f composer.json ]; then \
composer install --prefer-dist --no-dev --no-autoloader --no-scripts --no-progress; \
composer clear-cache; \
fi
COPY src /var/www/src
COPY bin /var/www/bin
COPY migrations /var/www/migrations
COPY config /var/www/config
COPY public /var/www/public
COPY .env.example /var/www/.env
RUN addgroup -g ${GID} www
RUN adduser -u ${UID} -s /bin/sh -D -G www www
RUN chown -R www:www /var/www
USER www
RUN set -eux; \
mkdir -p var/cache var/log; \
if [ -f composer.json ]; then \
composer dump-autoload --classmap-authoritative --no-dev; \
composer dump-env prod; \
composer run-script --no-dev post-install-cmd; \
chmod +x bin/console; sync; \
fi
FROM prod AS dev
USER root
RUN apk --no-cache add linux-headers pcre-dev ${PHPIZE_DEPS}
RUN pecl install xdebug-3.4.3
RUN docker-php-ext-enable xdebug
RUN apk del linux-headers pcre-dev ${PHPIZE_DEPS}
USER www
#COPY .php-cs-fixer.php /var/www/.php-cs-fixer.php
#COPY phpstan.neon /var/www/phpstan.neon
#COPY phpstan.stub /var/www/phpstan.stub
RUN composer install