From d1aa403f387c3368838d9e3d3406a43eccb41d4e Mon Sep 17 00:00:00 2001 From: rare-magma Date: Sun, 2 Jun 2024 14:34:56 +0200 Subject: [PATCH 01/12] ci: add alpine dockerfile Signed-off-by: rare-magma --- Dockerfile.alpine | 53 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100755 Dockerfile.alpine diff --git a/Dockerfile.alpine b/Dockerfile.alpine new file mode 100755 index 000000000..a849437c9 --- /dev/null +++ b/Dockerfile.alpine @@ -0,0 +1,53 @@ +FROM php:8-alpine + +# Install extensions +RUN apk add --quiet --no-cache \ + bash \ + apache2 \ + apache2-ssl \ + php82-apache2 \ + php82-ctype \ + php82-openssl \ + freetype-dev \ + libjpeg-turbo-dev \ + libpng-dev \ + libpq-dev +RUN docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ \ + && docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \ + && docker-php-ext-install -j$(nproc) gd pdo pdo_mysql pdo_pgsql pgsql +RUN ln -sf /dev/stdout /var/log/apache2/access.log && \ + ln -sf /dev/stderr /var/log/apache2/error.log + +# Prepare files and folders +RUN mkdir -p /speedtest/ + +# Copy sources +COPY backend/ /speedtest/backend + +COPY results/*.php /speedtest/results/ +COPY results/*.ttf /speedtest/results/ + +COPY *.js /speedtest/ +COPY favicon.ico /speedtest/ + +COPY docker/servers.json /servers.json + +COPY docker/*.php /speedtest/ +COPY docker/entrypoint.sh / + +# Prepare default environment variables +ENV TITLE=LibreSpeed +ENV MODE=standalone +ENV PASSWORD=password +ENV TELEMETRY=false +ENV ENABLE_ID_OBFUSCATION=false +ENV REDACT_IP_ADDRESSES=false +ENV WEBPORT=80 +ENV APACHE_DOCUMENT_ROOT=/var/www/html + +# https://httpd.apache.org/docs/2.4/stopping.html#gracefulstop +STOPSIGNAL SIGWINCH + +# Final touches +EXPOSE 80 +CMD ["bash", "/entrypoint.sh"] From 611c1a1743b373b6fa7d90d8139c5a61834ed539 Mon Sep 17 00:00:00 2001 From: rare-magma Date: Sun, 2 Jun 2024 14:35:47 +0200 Subject: [PATCH 02/12] feat: handle alpine configuration Signed-off-by: rare-magma --- docker/entrypoint.sh | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 172fd3198..2f1ed7743 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -12,6 +12,11 @@ cp /speedtest/*.js /var/www/html/ # Copy favicon cp /speedtest/favicon.ico /var/www/html/ +# Set custom webroot on alpine +if [ -f /etc/alpine-release ]; then + sed -i "s#\"/var/www/localhost/htdocs\"#\"/var/www/html\"#g" /etc/apache2/httpd.conf +fi + # Set up backend side for standlone modes if [[ "$MODE" == "standalone" || "$MODE" == "dual" ]]; then cp -r /speedtest/backend/ /var/www/html/backend @@ -81,11 +86,19 @@ chown -R www-data /var/www/html/* # Allow selection of Apache port for network_mode: host if [ "$WEBPORT" != "80" ]; then - sed -i "s/^Listen 80\$/Listen $WEBPORT/g" /etc/apache2/ports.conf - sed -i "s/*:80>/*:$WEBPORT>/g" /etc/apache2/sites-available/000-default.conf + if [ -f /etc/alpine-release ]; then + sed -i "s/^Listen 80\$/Listen $WEBPORT/g" /etc/apache2/httpd.conf + else + sed -i "s/^Listen 80\$/Listen $WEBPORT/g" /etc/apache2/ports.conf + sed -i "s/*:80>/*:$WEBPORT>/g" /etc/apache2/sites-available/000-default.conf + fi fi echo "Done, Starting APACHE" # This runs apache -exec apache2-foreground +if [ -f /etc/alpine-release ]; then + exec httpd -DFOREGROUND +else + exec apache2-foreground +fi From 348494dab4d43a87f3d416292788a3717c53f9eb Mon Sep 17 00:00:00 2001 From: rare-magma Date: Sun, 2 Jun 2024 14:38:38 +0200 Subject: [PATCH 03/12] ci: build alpine docker image Signed-off-by: rare-magma --- .github/workflows/docker-publish.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 4f89e48d3..99b15f1a9 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -26,6 +26,14 @@ env: jobs: build: runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - dockerfile: ./Dockerfile + image: ghcr.io/${{ github.repository }} + - dockerfile: ./Dockerfile.alpine + image: ghcr.io/${{ github.repository }}-alpine permissions: contents: read packages: write @@ -59,7 +67,7 @@ jobs: id: meta uses: docker/metadata-action@v5 with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + images: ${{ matrix.image }} tags: | type=ref,event=branch type=ref,event=pr @@ -75,6 +83,7 @@ jobs: uses: docker/build-push-action@v5 with: context: . + file: ${{ matrix.dockerfile }} platforms: linux/amd64,linux/arm64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} From 5d0cd7ef747b132b500a2b5585f37a06d8466b03 Mon Sep 17 00:00:00 2001 From: rare-magma Date: Sun, 2 Jun 2024 14:40:05 +0200 Subject: [PATCH 04/12] ci: remove unused env var Signed-off-by: rare-magma --- Dockerfile.alpine | 1 - 1 file changed, 1 deletion(-) diff --git a/Dockerfile.alpine b/Dockerfile.alpine index a849437c9..a0be2f9da 100755 --- a/Dockerfile.alpine +++ b/Dockerfile.alpine @@ -43,7 +43,6 @@ ENV TELEMETRY=false ENV ENABLE_ID_OBFUSCATION=false ENV REDACT_IP_ADDRESSES=false ENV WEBPORT=80 -ENV APACHE_DOCUMENT_ROOT=/var/www/html # https://httpd.apache.org/docs/2.4/stopping.html#gracefulstop STOPSIGNAL SIGWINCH From 4f067f4aa0af705224160cf142f54687926d44a9 Mon Sep 17 00:00:00 2001 From: rare-magma Date: Sun, 2 Jun 2024 16:17:57 +0200 Subject: [PATCH 05/12] fix: purge build dependencies Signed-off-by: rare-magma --- Dockerfile | 7 ++++++- Dockerfile.alpine | 12 +++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index a626296bb..fe2fed7f6 100755 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ FROM php:8-apache # Install extensions -RUN apt-get update && apt-get install -y \ +RUN apt-get update && apt-get install -y --no-install-recommends \ libfreetype6-dev \ libjpeg62-turbo-dev \ libpng-dev \ @@ -10,6 +10,11 @@ RUN apt-get update && apt-get install -y \ && docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ \ && docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \ && docker-php-ext-install -j$(nproc) gd pdo pdo_mysql pdo_pgsql pgsql \ + && apt-get remove -y libfreetype6-dev \ + libjpeg62-turbo-dev \ + libpng-dev \ + libpq-dev \ + && apt autoremove -y \ && rm -rf /var/lib/apt/lists/* # Prepare files and folders diff --git a/Dockerfile.alpine b/Dockerfile.alpine index a0be2f9da..34be54f4f 100755 --- a/Dockerfile.alpine +++ b/Dockerfile.alpine @@ -11,10 +11,16 @@ RUN apk add --quiet --no-cache \ freetype-dev \ libjpeg-turbo-dev \ libpng-dev \ - libpq-dev -RUN docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ \ + libpq-dev \ + && docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ \ && docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \ - && docker-php-ext-install -j$(nproc) gd pdo pdo_mysql pdo_pgsql pgsql + && docker-php-ext-install -j$(nproc) gd pdo pdo_mysql pdo_pgsql pgsql \ + && apk del --quiet --no-cache \ + freetype-dev \ + libjpeg-turbo-dev \ + libpng-dev \ + libpq-dev + RUN ln -sf /dev/stdout /var/log/apache2/access.log && \ ln -sf /dev/stderr /var/log/apache2/error.log From 301e3f52346a90d240c8694a304d1adc0a6b181d Mon Sep 17 00:00:00 2001 From: rare-magma Date: Sun, 2 Jun 2024 16:34:41 +0200 Subject: [PATCH 06/12] fix: purge php src Signed-off-by: rare-magma --- Dockerfile | 1 + Dockerfile.alpine | 1 + 2 files changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index fe2fed7f6..684a16027 100755 --- a/Dockerfile +++ b/Dockerfile @@ -10,6 +10,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ && docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ \ && docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \ && docker-php-ext-install -j$(nproc) gd pdo pdo_mysql pdo_pgsql pgsql \ + && rm -f /usr/src/php.tar.xz /usr/src/php.tar.xz.asc \ && apt-get remove -y libfreetype6-dev \ libjpeg62-turbo-dev \ libpng-dev \ diff --git a/Dockerfile.alpine b/Dockerfile.alpine index 34be54f4f..915b1766c 100755 --- a/Dockerfile.alpine +++ b/Dockerfile.alpine @@ -15,6 +15,7 @@ RUN apk add --quiet --no-cache \ && docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ \ && docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \ && docker-php-ext-install -j$(nproc) gd pdo pdo_mysql pdo_pgsql pgsql \ + && rm -f /usr/src/php.tar.xz /usr/src/php.tar.xz.asc \ && apk del --quiet --no-cache \ freetype-dev \ libjpeg-turbo-dev \ From e488bc44f6e02e2ff31a9bd124ffc5e69db78f89 Mon Sep 17 00:00:00 2001 From: rare-magma Date: Sat, 10 Aug 2024 12:52:32 +0200 Subject: [PATCH 07/12] ci: fix tags Signed-off-by: rare-magma --- .github/workflows/docker-publish.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 99b15f1a9..5dc1aa721 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -32,8 +32,10 @@ jobs: include: - dockerfile: ./Dockerfile image: ghcr.io/${{ github.repository }} + flavour: "" - dockerfile: ./Dockerfile.alpine - image: ghcr.io/${{ github.repository }}-alpine + image: ghcr.io/${{ github.repository }} + flavour: "-alpine" permissions: contents: read packages: write @@ -69,12 +71,11 @@ jobs: with: images: ${{ matrix.image }} tags: | - type=ref,event=branch - type=ref,event=pr # set latest tag for default branch - type=raw,value=latest,enable={{is_default_branch}} - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} + type=raw,value=latest${{ matrix.flavour }},enable={{is_default_branch}} + type=semver,pattern={{major}}${{ matrix.flavour }} + type=semver,pattern={{major}}.{{minor}}${{ matrix.flavour }} + type=semver,pattern={{major}}.{{minor}}.{{patch}}${{ matrix.flavour }} # Build and push Docker image with Buildx (don't push on PR) # https://github.com/docker/build-push-action From c73ed71043f909c0e76eccad781659b75e454575 Mon Sep 17 00:00:00 2001 From: rare-magma Date: Sat, 10 Aug 2024 12:53:05 +0200 Subject: [PATCH 08/12] ci: add missing tag Signed-off-by: rare-magma --- .github/workflows/docker-publish.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 5dc1aa721..20bd2f85d 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -73,6 +73,7 @@ jobs: tags: | # set latest tag for default branch type=raw,value=latest${{ matrix.flavour }},enable={{is_default_branch}} + type=semver,pattern={{version}} type=semver,pattern={{major}}${{ matrix.flavour }} type=semver,pattern={{major}}.{{minor}}${{ matrix.flavour }} type=semver,pattern={{major}}.{{minor}}.{{patch}}${{ matrix.flavour }} From 09d07a1ee9a7fdfde0021cf8c2332127b514f0b3 Mon Sep 17 00:00:00 2001 From: rare-magma Date: Sat, 10 Aug 2024 12:59:50 +0200 Subject: [PATCH 09/12] ci: add missing tag for pr and branch Signed-off-by: rare-magma --- .github/workflows/docker-publish.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 20bd2f85d..24637fcd7 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -71,6 +71,8 @@ jobs: with: images: ${{ matrix.image }} tags: | + type=ref,event=branch + type=ref,event=pr # set latest tag for default branch type=raw,value=latest${{ matrix.flavour }},enable={{is_default_branch}} type=semver,pattern={{version}} From 2c39a3a8dfc98e0afb7388b7c4ebd7ccff19c4b3 Mon Sep 17 00:00:00 2001 From: rare-magma Date: Sat, 10 Aug 2024 13:09:44 +0200 Subject: [PATCH 10/12] ci: add missing flavour for pr and branch Signed-off-by: rare-magma --- .github/workflows/docker-publish.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 24637fcd7..e5b869446 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -71,8 +71,8 @@ jobs: with: images: ${{ matrix.image }} tags: | - type=ref,event=branch - type=ref,event=pr + type=ref,event=branch,suffix=${{ matrix.flavour }} + type=ref,event=pr,suffix=${{ matrix.flavour }} # set latest tag for default branch type=raw,value=latest${{ matrix.flavour }},enable={{is_default_branch}} type=semver,pattern={{version}} From 0e4c1e2bc77306620c7ce5d69102961e3d35491d Mon Sep 17 00:00:00 2001 From: rare-magma Date: Sat, 10 Aug 2024 13:10:13 +0200 Subject: [PATCH 11/12] ci: add missing flavour for version Signed-off-by: rare-magma --- .github/workflows/docker-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index e5b869446..d52a4dee4 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -75,7 +75,7 @@ jobs: type=ref,event=pr,suffix=${{ matrix.flavour }} # set latest tag for default branch type=raw,value=latest${{ matrix.flavour }},enable={{is_default_branch}} - type=semver,pattern={{version}} + type=semver,pattern={{version}}${{ matrix.flavour }} type=semver,pattern={{major}}${{ matrix.flavour }} type=semver,pattern={{major}}.{{minor}}${{ matrix.flavour }} type=semver,pattern={{major}}.{{minor}}.{{patch}}${{ matrix.flavour }} From 76bb7de0378480dd51901c6ed883da98d5a957d4 Mon Sep 17 00:00:00 2001 From: rare-magma Date: Tue, 13 Aug 2024 20:33:21 +0200 Subject: [PATCH 12/12] ci: bump php in docker Signed-off-by: rare-magma --- Dockerfile.alpine | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile.alpine b/Dockerfile.alpine index 915b1766c..633ceec19 100755 --- a/Dockerfile.alpine +++ b/Dockerfile.alpine @@ -5,9 +5,9 @@ RUN apk add --quiet --no-cache \ bash \ apache2 \ apache2-ssl \ - php82-apache2 \ - php82-ctype \ - php82-openssl \ + php83-apache2 \ + php83-ctype \ + php83-openssl \ freetype-dev \ libjpeg-turbo-dev \ libpng-dev \