diff --git a/.github/workflows/coolify-production-build.yml b/.github/workflows/coolify-production-build.yml index 5ccb43a8e..dfae49555 100644 --- a/.github/workflows/coolify-production-build.yml +++ b/.github/workflows/coolify-production-build.yml @@ -60,6 +60,9 @@ jobs: run: | echo "VERSION=$(docker run --rm -v "$(pwd):/app" -w /app php:8.2-alpine3.16 php bootstrap/getVersion.php)"|xargs >> $GITHUB_OUTPUT + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Build and Push Image (${{ matrix.arch }}) uses: docker/build-push-action@v6 with: @@ -70,6 +73,12 @@ jobs: tags: | ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-${{ matrix.arch }} ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.VERSION }}-${{ matrix.arch }} + cache-from: | + type=gha,scope=prod-build-${{ matrix.arch }} + type=registry,ref=${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:prod-buildcache-${{ matrix.arch }} + cache-to: | + type=gha,mode=max,scope=prod-build-${{ matrix.arch }} + type=registry,ref=${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:prod-buildcache-${{ matrix.arch }},mode=max merge-manifest: runs-on: ubuntu-24.04 diff --git a/.github/workflows/coolify-staging-build.yml b/.github/workflows/coolify-staging-build.yml index c5b70ca92..0cbc432bb 100644 --- a/.github/workflows/coolify-staging-build.yml +++ b/.github/workflows/coolify-staging-build.yml @@ -81,7 +81,9 @@ jobs: cache-from: | type=gha,scope=build-${{ matrix.arch }} type=registry,ref=${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:buildcache-${{ matrix.arch }} - cache-to: type=gha,mode=max,scope=build-${{ matrix.arch }} + cache-to: | + type=gha,mode=max,scope=build-${{ matrix.arch }} + type=registry,ref=${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}:buildcache-${{ matrix.arch }},mode=max merge-manifest: runs-on: ubuntu-24.04 diff --git a/docker/production/Dockerfile b/docker/production/Dockerfile index a01dd595c..02df82f78 100644 --- a/docker/production/Dockerfile +++ b/docker/production/Dockerfile @@ -39,10 +39,24 @@ USER www-data FROM node:24-alpine AS static-assets WORKDIR /app -COPY package*.json vite.config.js postcss.config.cjs ./ + +# Layer 1: Package dependencies (rarely changes) +COPY package*.json ./ RUN --mount=type=cache,target=/root/.npm \ npm ci -COPY . . + +# Layer 2: Build config (rarely changes) +COPY vite.config.js postcss.config.cjs ./ + +# Layer 3: Frontend source files +COPY resources/css/ ./resources/css/ +COPY resources/js/ ./resources/js/ +COPY resources/fonts/ ./resources/fonts/ + +# Layer 4: Blade templates for Tailwind class detection +COPY resources/views/ ./resources/views/ + +# Build frontend assets RUN npm run build # =================================================================