ARG COMPOSER_IMAGE=composer:2.9.5@sha256:698d3801b2a622ace460c4743c781282fcbcb733a4cbf8b31c44731e846585e8 ARG NODE_IMAGE=node:22-bookworm-slim@sha256:d649c27dae7ba0137b3cef5dd75baa422c08dc3d9e3fc0c23dfb172dc3cc6436 ARG PHP_IMAGE=php:8.4-fpm-bookworm@sha256:c5fb7a0c02f4efe280691910c8b734995fa83598cdcf3115ef5dcb2e4617681c FROM ${COMPOSER_IMAGE} AS composer_binary FROM ${NODE_IMAGE} AS node_binary FROM ${PHP_IMAGE} AS php_base RUN apt-get update \ && apt-get install -y --no-install-recommends \ ca-certificates \ curl \ gettext-base \ git \ libfcgi-bin \ libfreetype6-dev \ libicu-dev \ libjpeg62-turbo-dev \ libmagickwand-dev \ libonig-dev \ libpng-dev \ libpq-dev \ libsqlite3-dev \ libssl-dev \ libxml2-dev \ libzip-dev \ nginx \ procps \ unzip \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install -j"$(nproc)" \ bcmath \ gd \ intl \ opcache \ pcntl \ pdo_mysql \ pdo_pgsql \ pdo_sqlite \ pgsql \ soap \ zip \ && pecl install imagick \ && docker-php-ext-enable imagick \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* COPY --from=composer_binary /usr/bin/composer /usr/local/bin/composer WORKDIR /var/www FROM php_base AS build COPY --from=node_binary /usr/local/ /usr/local/ COPY . /var/www RUN composer install --prefer-dist --no-interaction --no-progress \ && corepack enable pnpm \ && pnpm install --frozen-lockfile \ && pnpm run build FROM build AS test RUN cp .env.example .env \ && php artisan key:generate\ && composer audit --locked --no-interaction \ && COMPOSER_ALLOW_SUPERUSER=1 composer ci:check FROM build AS production_builder RUN composer install \ --classmap-authoritative \ --no-dev \ --no-interaction \ --no-progress \ --prefer-dist \ && rm -rf node_modules tests phpunit.xml FROM php_base AS runtime COPY docker/entrypoint.sh /usr/local/bin/kanbangit-entrypoint COPY docker/nginx/nginx.conf.template /etc/nginx/nginx.conf.template COPY docker/php-fpm-healthcheck.sh /usr/local/bin/php-fpm-healthcheck COPY --from=production_builder --chown=www-data:www-data /var/www /var/www RUN chmod +x /usr/local/bin/kanbangit-entrypoint /usr/local/bin/php-fpm-healthcheck \ && mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" \ && printf '%s\n' \ '[global]' \ 'daemonize = no' \ '' \ '[www]' \ 'pm.status_path = /status' \ > /usr/local/etc/php-fpm.d/zz-kanbangit.conf \ && mkdir -p \ /var/www/bootstrap/cache \ /var/www/storage/app/public \ /var/www/storage/framework/cache \ /var/www/storage/framework/sessions \ /var/www/storage/framework/testing \ /var/www/storage/framework/views \ /var/www/storage/logs \ && ln -s ../storage/app/public /var/www/public/storage \ && chown -R www-data:www-data /var/www/bootstrap/cache /var/www/storage USER www-data EXPOSE 8080 9000 ENTRYPOINT ["kanbangit-entrypoint"] CMD ["php-fpm"]