laravel-octane-performance-.../docker/Dockerfile

98 lines
3.1 KiB
Docker

# STAGE 0: GET REQUIRED PHP PACKAGES
FROM aprimediet/php:8.2-alpine AS php_builder
LABEL maintainer="<Muhamad Aditya Prima> 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="<Muhamad Aditya Prima> 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="<Muhamad Aditya Prima> 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/*
# 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