98 lines
3.1 KiB
Docker
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
|