64 lines
1.5 KiB
Docker
64 lines
1.5 KiB
Docker
FROM composer:2 AS vendor
|
|
|
|
WORKDIR /app
|
|
|
|
COPY composer.json composer.lock ./
|
|
|
|
# --no-scripts: artisan belum ada di stage ini, post-autoload-dump dijalankan di stage final
|
|
# tanpa --prefer-dist agar Composer bisa fallback ke git source saat unduhan dist gagal (mis. GitHub 504)
|
|
RUN composer install \
|
|
--no-dev \
|
|
--no-interaction \
|
|
--no-progress \
|
|
--no-scripts \
|
|
--no-autoloader
|
|
|
|
FROM node:22-alpine AS assets
|
|
|
|
WORKDIR /app
|
|
|
|
COPY package.json package-lock.json vite.config.js ./
|
|
COPY resources ./resources
|
|
COPY public ./public
|
|
|
|
RUN npm ci && npm run build
|
|
|
|
FROM php:8.3-cli-bookworm
|
|
|
|
WORKDIR /var/www/html
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
ca-certificates \
|
|
curl \
|
|
default-mysql-client \
|
|
git \
|
|
libicu-dev \
|
|
libzip-dev \
|
|
unzip \
|
|
&& docker-php-ext-install \
|
|
intl \
|
|
pdo_mysql \
|
|
zip \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
|
|
|
|
COPY docker/app/php.ini /usr/local/etc/php/conf.d/99-webgis.ini
|
|
COPY docker/app/entrypoint.sh /usr/local/bin/webgis-entrypoint
|
|
|
|
COPY . .
|
|
COPY --from=vendor /app/vendor ./vendor
|
|
COPY --from=assets /app/public/build ./public/build
|
|
|
|
RUN composer dump-autoload --no-dev --optimize --no-interaction \
|
|
&& php artisan package:discover --ansi
|
|
|
|
RUN chmod +x /usr/local/bin/webgis-entrypoint
|
|
|
|
EXPOSE 8000
|
|
|
|
ENTRYPOINT ["webgis-entrypoint"]
|
|
CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=8000"]
|