# STAGE 0: GET REQUIRED PHP PACKAGES FROM aprimediet/php:8.2-alpine AS php_builder LABEL maintainer=" aprimediet@gmail.com" WORKDIR /app # ADD COMPOSER file ADD composer* ./ # RUN COMPOSER UPDATE FIRST RUN --mount=type=cache,target=/root/.composer/cache \ composer update -vvv -n --prefer-dist \ --no-install --no-autoloader --no-scripts; exit 0 # RUN COMPOSER INSTALL RUN --mount=type=cache,target=/root/.composer/cache \ composer install -vvv -n --prefer-dist \ --no-autoloader --no-scripts # # STAGE 1: GET REQUIRED NODEJS PACKAGES # FROM registry.cifo.co.id/docker/nodejs:18-ubuntu AS node_builder # LABEL maintainer=" aditya.prima@cifo.co.id" # WORKDIR /app # # ADD REQUIRED NODE FILES # ADD . . # # INSTALL REQUIRED NODE PACKAGES # RUN --mount=type=cache,target=/usr/local/share/.cache/yarn \ # yarn install --production=false --non-interactive # # BUILD ASSETS THROUGH VITE # RUN yarn production # STAGE 2: FINALLY CREATE RUNNER IMAGES FROM aprimediet/alpine:3.18 AS runner LABEL maintainer=" aditya.prima@cifo.co.id" ARG PHP_VERSION=82 ENV APP_DIR /app WORKDIR /app # INSTALL PHP APP RUN --mount=type=cache,target=/var/cache/apk \ apk add --update \ git php${PHP_VERSION} php${PHP_VERSION}-bz2 php${PHP_VERSION}-bcmath php${PHP_VERSION}-common \ php${PHP_VERSION}-ctype php${PHP_VERSION}-curl php${PHP_VERSION}-dev \ php${PHP_VERSION}-dom php${PHP_VERSION}-embed php${PHP_VERSION}-exif \ php${PHP_VERSION}-ftp php${PHP_VERSION}-gd php${PHP_VERSION}-gettext php${PHP_VERSION}-gmp \ php${PHP_VERSION}-iconv php${PHP_VERSION}-intl php${PHP_VERSION}-ldap php${PHP_VERSION}-openssl php${PHP_VERSION}-pear \ php${PHP_VERSION}-pspell php${PHP_VERSION}-soap \ php${PHP_VERSION}-sockets php${PHP_VERSION}-xml php${PHP_VERSION}-xmlreader \ php${PHP_VERSION}-xsl php${PHP_VERSION}-zip php${PHP_VERSION}-json php${PHP_VERSION}-phar \ php${PHP_VERSION}-pcntl # INSTALL PACKAGES AND IGNORE ERRORS WHEN OCURRED RUN --mount=type=cache,target=/var/cache/apk \ apk add \ php${PHP_VERSION}-fileinfo php${PHP_VERSION}-session php${PHP_VERSION}-simplexml \ php${PHP_VERSION}-tidy php${PHP_VERSION}-tokenizer php${PHP_VERSION}-xmlwriter; exit 0 RUN --mount=type=cache,target=/var/cache/apk \ apk add \ php${PHP_VERSION}-dbg; exit 0 # CREATE SYMLINKS TO /usr/bin/php IN CASE IT IS NOT EXISTS RUN ln -ns /usr/bin/php${PHP_VERSION} /usr/bin/php; exit 0 # DOWNLOAD AND INSTALL COMPOSER ADD https://getcomposer.org/installer ./composer-setup.php RUN php composer-setup.php && mv composer.phar /usr/local/bin/composer && rm -f ./composer-setup.php # ADD /etc ADD ./docker/etc /etc ADD . . RUN chmod +x /etc/cont-init.d/* RUN chmod +x /etc/services.d/laravel/* # COPY FROM BUILDER COPY --from=php_builder /app/vendor ./vendor # COPY --from=node_builder /app/node_modules ./node_modules # COPY --from=node_builder /app/public ./public # CONFIGURE ENVIRONMENT RUN touch .env RUN echo "APP_KEY=" > .env # RUN COMPOSER DUMP AUTOLOAD RUN composer dump-autoload # Install laravel octane RUN php artisan octane:install --server=frankenphp # CLEAN APK CACHES RUN rm -vrf /var/cache/apk/* EXPOSE 8000