FROM docker.io/php:8.5-fpm-alpine3.23 AS php RUN apk --no-cache add pcre2 libbz2 libpng libwebp libjpeg-turbo icu-libs freetype oniguruma libzip jq \ && apk add --no-cache --virtual .phpize-deps icu-dev libpng-dev bzip2-dev libwebp-dev libjpeg-turbo-dev freetype-dev oniguruma-dev libzip-dev pcre2-dev ${PHPIZE_DEPS} \ && docker-php-ext-configure intl --enable-intl && \ docker-php-ext-configure bcmath --enable-bcmath && \ docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp && \ docker-php-ext-install -j$(nproc) gd && \ docker-php-ext-install bcmath &&\ docker-php-ext-install pdo \ mysqli pdo_mysql \ intl mbstring \ zip pcntl \ exif bz2 \ calendar \ && pear update-channels && pecl update-channels \ && pecl install redis && docker-php-ext-enable redis \ && rm -rf /tmp/pear \ && docker-php-source delete \ && apk del .phpize-deps \ && rm -rf /var/cache/apk/* && rm -rf /etc/apk/cache \ && rm -rf /usr/share/php && rm -rf /tmp/* \ && rm "$PHP_INI_DIR/php.ini-development" \ && mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" \ && mkdir -p /tmp/php/upload \ && mkdir -p /tmp/php/sys \ && mkdir -p /tmp/php/session \ && chown -R www-data:www-data /tmp/php COPY docker/php/conf/app-fpm.conf /usr/local/etc/php-fpm.d/app-fpm.conf FROM docker.io/nginx:1.31-alpine AS nginx COPY docker/web/conf/default.conf.template /etc/nginx/templates/default.conf.template COPY docker/web/conf/fastcgi_params /etc/nginx/fastcgi_params COPY docker/web/start.sh /usr/local/bin/start RUN chmod 755 /usr/local/bin/start FROM nginx AS web_build_for_production WORKDIR /home/app COPY application /home/app RUN apk --no-cache add git nodejs npm \ && npm install && npm run build \ && rm -rf /home/app/node_modules FROM php AS app_build_for_production WORKDIR /home/app COPY application /home/app RUN apk --no-cache add git \ && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ && composer install --optimize-autoloader --no-dev \ && rm -f /home/app/.env FROM php AS app_production COPY --from=app_build_for_production /home/app /var/www/html COPY --from=web_build_for_production /home/app/public/build/ /var/www/html/public/build COPY docker/php/start.sh /usr/local/bin/start WORKDIR /var/www/html RUN chown -R www-data:www-data /var/www/html \ && chmod 755 /usr/local/bin/start STOPSIGNAL SIGTERM USER www-data EXPOSE 9000 CMD ["/usr/local/bin/start"] FROM nginx AS web_production COPY --from=web_build_for_production /home/app/public /usr/share/nginx/html RUN rm -f /usr/share/nginx/html/50x.html /usr/share/nginx/html/index.php /usr/share/nginx/html/.htaccess WORKDIR /usr/share/nginx/html EXPOSE 80 CMD ["/usr/local/bin/start"] # develop FROM php AS app_develop WORKDIR /var/www/html COPY docker/php/start.sh /usr/local/bin/start STOPSIGNAL SIGTERM RUN chmod 755 /usr/local/bin/start \ && apk --no-cache add git nodejs npm \ && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer USER www-data EXPOSE 9000 CMD ["/usr/local/bin/start"] FROM php AS artisan WORKDIR /var/www/html STOPSIGNAL SIGTERM ENTRYPOINT ["php", "/var/www/html/artisan"] FROM php AS composer WORKDIR /var/www/html STOPSIGNAL SIGTERM RUN apk --no-cache add git \ && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer RUN mkdir "/.composer" && chmod -R 0777 "/.composer" ENTRYPOINT ["composer"] FROM php AS npm RUN mkdir "/.npm" && chmod -R 0777 "/.npm" WORKDIR /var/www/html STOPSIGNAL SIGTERM RUN apk --no-cache add nodejs npm ENTRYPOINT ["npm"] FROM nginx AS web_develop WORKDIR /usr/share/nginx/html EXPOSE 80 CMD ["/usr/local/bin/start"]