Dockerfile 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. # syntax=docker/dockerfile:1.7
  2. # ---------- node stage: build Tailwind ----------
  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. # ---------- composer stage ----------
  12. FROM composer:2 AS deps
  13. WORKDIR /app
  14. COPY composer.json composer.lock* ./
  15. RUN composer install --no-dev --no-interaction --no-scripts --no-progress --optimize-autoloader
  16. # ---------- runtime ----------
  17. FROM dunglas/frankenphp:1-php8.3-alpine
  18. ENV PHP_INI_SCAN_DIR=/usr/local/etc/php/conf.d
  19. RUN apk add --no-cache \
  20. icu-dev \
  21. oniguruma-dev \
  22. bash \
  23. && install-php-extensions \
  24. mbstring \
  25. intl \
  26. opcache
  27. WORKDIR /app
  28. COPY --from=deps /app/vendor ./vendor
  29. COPY . ./
  30. COPY --from=assets /app/public/assets ./public/assets
  31. COPY docker/Caddyfile /etc/Caddyfile
  32. COPY docker/entrypoint.sh /usr/local/bin/entrypoint.sh
  33. RUN chmod +x /usr/local/bin/entrypoint.sh
  34. EXPOSE 8080
  35. ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
  36. CMD ["ui"]