Files
D1041231009-WebGIS-PovertyMap/Dockerfile
T

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"]