1
0

Dockerfile 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. # syntax=docker/dockerfile:1.7
  2. # ---------- node stage: build Tailwind + JS bundle ----------
  3. FROM node:20-alpine AS assets
  4. WORKDIR /app
  5. COPY package.json package-lock.json* ./
  6. RUN npm install --no-audit --no-fund
  7. COPY tailwind.config.js postcss.config.js ./
  8. COPY resources ./resources
  9. RUN mkdir -p public/assets \
  10. && npx tailwindcss -i resources/css/app.css -o public/assets/app.css --minify \
  11. && npx esbuild resources/js/app.js --bundle --minify --target=es2020 --outfile=public/assets/app.js
  12. # ---------- composer stage ----------
  13. FROM composer:2 AS deps
  14. WORKDIR /app
  15. COPY composer.json composer.lock* ./
  16. RUN composer install --no-dev --no-interaction --no-scripts --no-progress --optimize-autoloader
  17. # ---------- runtime ----------
  18. FROM dunglas/frankenphp:1-php8.3-alpine
  19. ENV PHP_INI_SCAN_DIR=/usr/local/etc/php/conf.d
  20. RUN apk add --no-cache \
  21. icu-dev \
  22. oniguruma-dev \
  23. bash \
  24. && install-php-extensions \
  25. mbstring \
  26. intl \
  27. opcache
  28. WORKDIR /app
  29. COPY --from=deps /app/vendor ./vendor
  30. COPY . ./
  31. COPY --from=assets /app/public/assets ./public/assets
  32. COPY docker/Caddyfile /etc/Caddyfile
  33. COPY docker/entrypoint.sh /usr/local/bin/entrypoint.sh
  34. RUN chmod +x /usr/local/bin/entrypoint.sh
  35. EXPOSE 8080
  36. ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
  37. CMD ["ui"]