diff --git a/.github/workflows/build_push.yml b/.github/workflows/build_push.yml index 1d2c9de..be000cf 100644 --- a/.github/workflows/build_push.yml +++ b/.github/workflows/build_push.yml @@ -38,7 +38,8 @@ jobs: with: context: . file: ./Dockerfile - platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 + platforms: linux/amd64,linux/arm/v7,linux/arm64 + # platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 push: true tags: | lycheeorg/lychee:testing-${{ github.run_id }} diff --git a/.github/workflows/cron.yml b/.github/workflows/cron.yml index ecedc90..d47789f 100644 --- a/.github/workflows/cron.yml +++ b/.github/workflows/cron.yml @@ -19,23 +19,24 @@ jobs: uses: actions/checkout@v3 - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3.0.0 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3.0.0 - name: Login to DockerHub - uses: docker/login-action@v2 + uses: docker/login-action@v3.0.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v5.1.0 with: context: . file: ./Dockerfile - platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 + platforms: linux/amd64,linux/arm/v7,linux/arm64 + # platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 push: true tags: | lycheeorg/lychee:testing-${{ github.run_id }} @@ -48,23 +49,24 @@ jobs: uses: actions/checkout@v3 - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3.0.0 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3.0.0 - name: Login to DockerHub - uses: docker/login-action@v2 + uses: docker/login-action@v3.0.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v5.1.0 with: context: . file: ./Dockerfile - platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 + platforms: linux/amd64,linux/arm/v7,linux/arm64 + # platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 push: true build-args: | COMPOSER_NO_DEV=0 diff --git a/.github/workflows/pull.yml b/.github/workflows/pull.yml index 77c0110..34f9b70 100644 --- a/.github/workflows/pull.yml +++ b/.github/workflows/pull.yml @@ -19,24 +19,25 @@ jobs: uses: actions/checkout@v3 - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3.0.0 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3.0.0 - name: Test multiarch building - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v5.1.0 with: context: . file: ./Dockerfile - platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 + platforms: linux/amd64,linux/arm/v7,linux/arm64 + # platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 load: false push: false tags: | lycheeorg/lychee:testing-${{ github.run_id }} - name: Save amd64 image to pass to testing - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v5.1.0 with: context: . file: ./Dockerfile diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6070de0..1ec1e9e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,23 +22,24 @@ jobs: uses: actions/checkout@v3 - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3.0.0 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3.0.0 - name: Login to DockerHub - uses: docker/login-action@v2 + uses: docker/login-action@v3.0.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v5.1.0 with: context: . file: ./Dockerfile - platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 + platforms: linux/amd64,linux/arm/v7,linux/arm64 + # platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 push: true build-args: | TARGET=release diff --git a/Dockerfile b/Dockerfile index f550d12..34ae422 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:bookworm-slim +FROM debian:bookworm-slim as base # Set version label LABEL maintainer="lycheeorg" @@ -45,6 +45,7 @@ RUN \ gifsicle \ webp \ cron \ + rsync \ composer \ unzip && \ addgroup --gid "$PGID" "$USER" && \ @@ -74,6 +75,33 @@ RUN \ apt-get clean -qy &&\ rm -rf /var/lib/apt/lists/* +# Multi-stage build: Build static assets +# This allows us to not include Node within the final container +FROM node:20 as node_modules_go_brrr + +RUN mkdir /app + +RUN mkdir -p /app +WORKDIR /app +COPY --from=base /var/www/html/Lychee /app + +RUN \ + npm ci --no-audit \ + npm run build + +# From our base container created above, we +# create our final image, adding in static +# assets that we generated above +FROM base + +# Packages like Laravel Nova may have added assets to the public directory +# or maybe some custom assets were added manually! Either way, we merge +# in the assets we generated above rather than overwrite them +COPY --from=node_modules_go_brrr --chown=www-data:www-data /app/public /var/www/html/Lychee/public-npm +RUN rsync -ar /var/www/html/Lychee/public-npm/ /var/www/html/Lychee/public/ \ + && rm -rf /var/www/html/Lychee/public-npm \ + && chown -R www-data:www-data /var/www/html/Lychee/public + # Add custom Nginx configuration COPY default.conf /etc/nginx/nginx.conf