128 lines
2.6 KiB
Docker
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 |