83 lines
1.8 KiB
Docker
83 lines
1.8 KiB
Docker
FROM php:8.3-fpm-alpine AS system-setup
|
|
|
|
RUN apk --no-cache add \
|
|
curl \
|
|
git \
|
|
linux-headers \
|
|
icu-dev \
|
|
zip \
|
|
libzip-dev \
|
|
unzip \
|
|
nginx \
|
|
supervisor \
|
|
$PHPIZE_DEPS && \
|
|
pecl install apcu
|
|
|
|
RUN curl --remote-name https://curl.se/ca/cacert.pem \
|
|
&& mv cacert.pem /etc/ssl/certs/ca-certificates.crt
|
|
|
|
RUN docker-php-ext-install \
|
|
pdo \
|
|
pdo_mysql \
|
|
intl \
|
|
zip \
|
|
opcache && \
|
|
docker-php-ext-enable apcu
|
|
|
|
COPY --from=composer:2.8.9 /usr/bin/composer /usr/local/bin/composer
|
|
|
|
COPY ./docker/main/default.conf /etc/nginx/http.d/default.conf
|
|
COPY ./docker/main/supervisord.conf /etc/supervisord.conf
|
|
COPY ./docker/main/www.conf /usr/local/etc/php-fpm.d/www.conf
|
|
COPY ./docker/main/local.ini /usr/local/etc/php/conf.d/local.ini
|
|
|
|
# FPM configuration via ENV
|
|
ENV FPM_PM=dynamic
|
|
ENV FPM_PM_MAX_CHILDREN=5
|
|
ENV FPM_PM_START_SERVERS=2
|
|
ENV FPM_PM_MIN_SPARE_SERVERS=1
|
|
ENV FPM_PM_MAX_SPARE_SERVERS=3
|
|
|
|
# PHP configuration via ENV
|
|
ENV LOG_TO_STDOUT=1
|
|
ENV PHP_MEMORY_LIMIT=512M
|
|
ENV PHP_MAX_EXECUTION_TIME=30
|
|
ENV PHP_UPLOAD_MAX_FILESIZE=120M
|
|
ENV PHP_POST_MAX_SIZE=128M
|
|
ENV PHP_SESSION_SAVE_HANDLER=files
|
|
ENV PHP_SESSION_SAVE_PATH=
|
|
ENV PHP_DISPLAY_ERRORS=0
|
|
ENV PHP_DISPLAY_STARTUP_ERRORS=0
|
|
|
|
FROM node:24-alpine AS assets
|
|
|
|
WORKDIR /app
|
|
|
|
COPY package*.json ./
|
|
RUN npm install
|
|
|
|
COPY . .
|
|
RUN npm run build
|
|
|
|
FROM system-setup AS app-setup
|
|
|
|
COPY . /app
|
|
COPY --from=assets /app/public/build /app/public/build
|
|
|
|
RUN chown -R nginx:nginx /app
|
|
|
|
COPY ./docker/main/entrypoint.sh /usr/local/bin/entrypoint.sh
|
|
RUN chmod +x /usr/local/bin/entrypoint.sh
|
|
|
|
USER nginx
|
|
WORKDIR /app
|
|
|
|
RUN composer install --prefer-dist --no-scripts --no-dev --optimize-autoloader
|
|
|
|
EXPOSE 80
|
|
|
|
HEALTHCHECK --interval=15s --timeout=5s --retries=3 \
|
|
CMD curl -s -o /dev/null -f http://localhost/v4/ping || exit 1
|
|
|
|
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|