From 7c086aa95e93d640ee7ea91b6151f6efbb602a6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Tue, 9 Jul 2024 23:48:43 +0200 Subject: [PATCH 01/10] fix: try to debug the Alpine crash --- docker-bake.hcl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docker-bake.hcl b/docker-bake.hcl index 7156cedb2..9b6f332e2 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -82,8 +82,7 @@ target "default" { } contexts = { php-base = "docker-image://php:${php-version}-zts-${os}" - # FIXME: temporary workaround for https://github.com/dunglas/symfony-docker/issues/646 - golang-base = "docker-image://golang:${os == "alpine" ? "1.22.4" : GO_VERSION}-${os}" + golang-base = "docker-image://golang:${GO_VERSION}-${os}" } dockerfile = os == "alpine" ? "alpine.Dockerfile" : "Dockerfile" context = "./" From e5a3e116fed54a7afc85f022810d3d3950aaceca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Wed, 10 Jul 2024 00:17:24 +0200 Subject: [PATCH 02/10] gotip --- .github/workflows/docker.yaml | 2 +- alpine.Dockerfile | 13 +++++++++---- testdata/Caddyfile | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 22a5c4bf9..62cf6d640 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -207,7 +207,7 @@ jobs: run: | docker run --platform=${{ matrix.platform }} --rm \ "$(jq -r '."builder-${{ matrix.variant }}"."containerimage.config.digest"' <<< "${METADATA}")" \ - sh -c 'go test ${{ matrix.race }} -v ./... && cd caddy && go test ${{ matrix.race }} -v ./...' + sh -c 'gotip test ${{ matrix.race }} -v ./... && cd caddy && gotip test ${{ matrix.race }} -v ./...' env: METADATA: ${{ steps.build.outputs.metadata }} # Adapted from https://docs.docker.com/build/ci/github-actions/multi-platform/ diff --git a/alpine.Dockerfile b/alpine.Dockerfile index 114d8ed1c..99e623d9e 100644 --- a/alpine.Dockerfile +++ b/alpine.Dockerfile @@ -64,16 +64,21 @@ RUN apk add --no-cache --virtual .build-deps \ openssl-dev \ readline-dev \ sqlite-dev \ - upx + upx \ + # Needed by gotip + git \ + bash + +RUN GOBIN=/usr/local/go/bin go install golang.org/dl/gotip@latest && (yes || true) | gotip download 585817 WORKDIR /go/src/app COPY --link go.mod go.sum ./ -RUN go mod graph | awk '{if ($1 !~ "@") print $2}' | xargs go get +RUN gotip mod graph | awk '{if ($1 !~ "@") print $2}' | xargs gotip get WORKDIR /go/src/app/caddy COPY caddy/go.mod caddy/go.sum ./ -RUN go mod graph | awk '{if ($1 !~ "@") print $2}' | xargs go get +RUN gotip mod graph | awk '{if ($1 !~ "@") print $2}' | xargs gotip get WORKDIR /go/src/app COPY --link *.* ./ @@ -86,7 +91,7 @@ COPY --link testdata testdata ENV CGO_LDFLAGS="-lssl -lcrypto -lreadline -largon2 -lcurl -lonig -lz $PHP_LDFLAGS" CGO_CFLAGS="-DFRANKENPHP_VERSION=$FRANKENPHP_VERSION $PHP_CFLAGS" CGO_CPPFLAGS=$PHP_CPPFLAGS WORKDIR /go/src/app/caddy/frankenphp -RUN GOBIN=/usr/local/bin go install -ldflags "-w -s -extldflags '-Wl,-z,stack-size=0x80000' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP $FRANKENPHP_VERSION PHP $PHP_VERSION Caddy'" && \ +RUN GOBIN=/usr/local/bin gotip install -ldflags "-w -s -extldflags '-Wl,-z,stack-size=0x80000' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP $FRANKENPHP_VERSION PHP $PHP_VERSION Caddy'" && \ setcap cap_net_bind_service=+ep /usr/local/bin/frankenphp && \ upx --best /usr/local/bin/frankenphp && \ frankenphp version diff --git a/testdata/Caddyfile b/testdata/Caddyfile index 03f772dec..e052c58de 100644 --- a/testdata/Caddyfile +++ b/testdata/Caddyfile @@ -1,7 +1,7 @@ { debug frankenphp { - #worker ./index.php + worker ./index.php } } From 790d3aa4af2ad3bf0e2e8b1b3c91d91ee5df3a35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Wed, 10 Jul 2024 10:15:28 +0200 Subject: [PATCH 03/10] wip --- testdata/Caddyfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testdata/Caddyfile b/testdata/Caddyfile index e052c58de..03f772dec 100644 --- a/testdata/Caddyfile +++ b/testdata/Caddyfile @@ -1,7 +1,7 @@ { debug frankenphp { - worker ./index.php + #worker ./index.php } } From 97af9c84eb815b2c22def81c0f691c9cb30ab086 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Wed, 10 Jul 2024 17:49:57 +0200 Subject: [PATCH 04/10] test --- .github/workflows/docker.yaml | 2 +- alpine.Dockerfile | 22 +++++++++++++++++----- docker-bake.hcl | 4 +--- static-builder.Dockerfile | 14 ++++++++++++++ 4 files changed, 33 insertions(+), 9 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 62cf6d640..22a5c4bf9 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -207,7 +207,7 @@ jobs: run: | docker run --platform=${{ matrix.platform }} --rm \ "$(jq -r '."builder-${{ matrix.variant }}"."containerimage.config.digest"' <<< "${METADATA}")" \ - sh -c 'gotip test ${{ matrix.race }} -v ./... && cd caddy && gotip test ${{ matrix.race }} -v ./...' + sh -c 'go test ${{ matrix.race }} -v ./... && cd caddy && go test ${{ matrix.race }} -v ./...' env: METADATA: ${{ steps.build.outputs.metadata }} # Adapted from https://docs.docker.com/build/ci/github-actions/multi-platform/ diff --git a/alpine.Dockerfile b/alpine.Dockerfile index 99e623d9e..4b22d26e9 100644 --- a/alpine.Dockerfile +++ b/alpine.Dockerfile @@ -65,20 +65,32 @@ RUN apk add --no-cache --virtual .build-deps \ readline-dev \ sqlite-dev \ upx \ - # Needed by gotip + # Needed for the custom Go build git \ bash -RUN GOBIN=/usr/local/go/bin go install golang.org/dl/gotip@latest && (yes || true) | gotip download 585817 +# FIXME: temporary workaround for https://github.com/dunglas/symfony-docker/issues/646 +WORKDIR / +RUN git clone https://go.googlesource.com/go goroot +WORKDIR /goroot +# Revert https://github.com/golang/go/commit/3560cf0afb3c29300a6c88ccd98256949ca7a6f6 to prevent the crash with musl +RUN git config --global user.email "build@example.com" && \ + git config --global user.name "Build" && \ + git checkout "$(go env GOVERSION)" && \ + git revert 3560cf0afb3c29300a6c88ccd98256949ca7a6f6 +WORKDIR /goroot/src +RUN ./make.bash +ENV PATH="/goroot/bin:$PATH" +RUN go version WORKDIR /go/src/app COPY --link go.mod go.sum ./ -RUN gotip mod graph | awk '{if ($1 !~ "@") print $2}' | xargs gotip get +RUN go mod graph | awk '{if ($1 !~ "@") print $2}' | xargs go get WORKDIR /go/src/app/caddy COPY caddy/go.mod caddy/go.sum ./ -RUN gotip mod graph | awk '{if ($1 !~ "@") print $2}' | xargs gotip get +RUN go mod graph | awk '{if ($1 !~ "@") print $2}' | xargs go get WORKDIR /go/src/app COPY --link *.* ./ @@ -91,7 +103,7 @@ COPY --link testdata testdata ENV CGO_LDFLAGS="-lssl -lcrypto -lreadline -largon2 -lcurl -lonig -lz $PHP_LDFLAGS" CGO_CFLAGS="-DFRANKENPHP_VERSION=$FRANKENPHP_VERSION $PHP_CFLAGS" CGO_CPPFLAGS=$PHP_CPPFLAGS WORKDIR /go/src/app/caddy/frankenphp -RUN GOBIN=/usr/local/bin gotip install -ldflags "-w -s -extldflags '-Wl,-z,stack-size=0x80000' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP $FRANKENPHP_VERSION PHP $PHP_VERSION Caddy'" && \ +RUN GOBIN=/usr/local/bin go install -ldflags "-w -s -extldflags '-Wl,-z,stack-size=0x80000' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP $FRANKENPHP_VERSION PHP $PHP_VERSION Caddy'" && \ setcap cap_net_bind_service=+ep /usr/local/bin/frankenphp && \ upx --best /usr/local/bin/frankenphp && \ frankenphp version diff --git a/docker-bake.hcl b/docker-bake.hcl index 9b6f332e2..75f48e01c 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -119,9 +119,7 @@ target "default" { target "static-builder" { contexts = { - # FIXME: temporary workaround for https://github.com/dunglas/symfony-docker/issues/646 - #golang-base = "docker-image://golang:${GO_VERSION}-alpine" - golang-base = "docker-image://golang:1.22.4-alpine" + golang-base = "docker-image://golang:${GO_VERSION}-alpine" } dockerfile = "static-builder.Dockerfile" context = "./" diff --git a/static-builder.Dockerfile b/static-builder.Dockerfile index ad4949a06..5d4c7507b 100644 --- a/static-builder.Dockerfile +++ b/static-builder.Dockerfile @@ -68,6 +68,20 @@ RUN apk update; \ xz ; \ ln -sf /usr/bin/php83 /usr/bin/php +# FIXME: temporary workaround for https://github.com/dunglas/symfony-docker/issues/646 +WORKDIR / +RUN git clone https://go.googlesource.com/go goroot +WORKDIR /goroot +# Revert https://github.com/golang/go/commit/3560cf0afb3c29300a6c88ccd98256949ca7a6f6 to prevent the crash with musl +RUN git config --global user.email "build@example.com" && \ + git config --global user.name "Build" && \ + git checkout "$(go env GOVERSION)" && \ + git revert 3560cf0afb3c29300a6c88ccd98256949ca7a6f6 +WORKDIR /goroot/src +RUN ./make.bash +ENV PATH="/goroot/bin:$PATH" +RUN go version + # https://getcomposer.org/doc/03-cli.md#composer-allow-superuser ENV COMPOSER_ALLOW_SUPERUSER=1 COPY --from=composer/composer:2-bin /composer /usr/bin/composer From 3d4c62702488fb402dc09d6f63e0e9dfd5d9247e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Wed, 10 Jul 2024 18:27:21 +0200 Subject: [PATCH 05/10] try to fix 386 builds --- alpine.Dockerfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/alpine.Dockerfile b/alpine.Dockerfile index 4b22d26e9..fac15ea99 100644 --- a/alpine.Dockerfile +++ b/alpine.Dockerfile @@ -1,6 +1,8 @@ # syntax=docker/dockerfile:1 FROM php-base AS common +ARG TARGETARCH + WORKDIR /app RUN apk add --no-cache \ @@ -79,7 +81,8 @@ RUN git config --global user.email "build@example.com" && \ git checkout "$(go env GOVERSION)" && \ git revert 3560cf0afb3c29300a6c88ccd98256949ca7a6f6 WORKDIR /goroot/src -RUN ./make.bash +ENV GOARCH="$TARGETARCH" +RUN echo $GOARCH && ./make.bash ENV PATH="/goroot/bin:$PATH" RUN go version From ad19af5723f4958c7163524ae7e52cefc46cb4db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Wed, 10 Jul 2024 18:32:34 +0200 Subject: [PATCH 06/10] wip --- alpine.Dockerfile | 4 ++-- static-builder.Dockerfile | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/alpine.Dockerfile b/alpine.Dockerfile index fac15ea99..0d4ea1665 100644 --- a/alpine.Dockerfile +++ b/alpine.Dockerfile @@ -81,8 +81,8 @@ RUN git config --global user.email "build@example.com" && \ git checkout "$(go env GOVERSION)" && \ git revert 3560cf0afb3c29300a6c88ccd98256949ca7a6f6 WORKDIR /goroot/src -ENV GOARCH="$TARGETARCH" -RUN echo $GOARCH && ./make.bash +ENV GOHOSTARCH="$TARGETARCH" +RUN echo $GOHOSTARCH && ./make.bash ENV PATH="/goroot/bin:$PATH" RUN go version diff --git a/static-builder.Dockerfile b/static-builder.Dockerfile index 5d4c7507b..3662d1d4a 100644 --- a/static-builder.Dockerfile +++ b/static-builder.Dockerfile @@ -1,6 +1,8 @@ # syntax=docker/dockerfile:1 FROM golang-base +ARG TARGETARCH + ARG FRANKENPHP_VERSION='' ENV FRANKENPHP_VERSION=${FRANKENPHP_VERSION} @@ -78,7 +80,8 @@ RUN git config --global user.email "build@example.com" && \ git checkout "$(go env GOVERSION)" && \ git revert 3560cf0afb3c29300a6c88ccd98256949ca7a6f6 WORKDIR /goroot/src -RUN ./make.bash +ENV GOHOSTARCH="$TARGETARCH" +RUN echo $GOHOSTARCH && ./make.bash ENV PATH="/goroot/bin:$PATH" RUN go version From b96b829c81a57245a6c3cb46b4a792fc5593011f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Wed, 10 Jul 2024 18:35:12 +0200 Subject: [PATCH 07/10] fix link --- alpine.Dockerfile | 2 +- static-builder.Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/alpine.Dockerfile b/alpine.Dockerfile index 0d4ea1665..83da34257 100644 --- a/alpine.Dockerfile +++ b/alpine.Dockerfile @@ -71,7 +71,7 @@ RUN apk add --no-cache --virtual .build-deps \ git \ bash -# FIXME: temporary workaround for https://github.com/dunglas/symfony-docker/issues/646 +# FIXME: temporary workaround for https://github.com/golang/go/issues/68285 WORKDIR / RUN git clone https://go.googlesource.com/go goroot WORKDIR /goroot diff --git a/static-builder.Dockerfile b/static-builder.Dockerfile index 3662d1d4a..93a677347 100644 --- a/static-builder.Dockerfile +++ b/static-builder.Dockerfile @@ -70,7 +70,7 @@ RUN apk update; \ xz ; \ ln -sf /usr/bin/php83 /usr/bin/php -# FIXME: temporary workaround for https://github.com/dunglas/symfony-docker/issues/646 +# FIXME: temporary workaround for https://github.com/golang/go/issues/68285 WORKDIR / RUN git clone https://go.googlesource.com/go goroot WORKDIR /goroot From 270705e3cc0c8d9f8049c69dd94b669d11e7b508 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Wed, 10 Jul 2024 19:47:09 +0200 Subject: [PATCH 08/10] cleanup --- alpine.Dockerfile | 2 +- static-builder.Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/alpine.Dockerfile b/alpine.Dockerfile index 83da34257..6d74cf62a 100644 --- a/alpine.Dockerfile +++ b/alpine.Dockerfile @@ -82,7 +82,7 @@ RUN git config --global user.email "build@example.com" && \ git revert 3560cf0afb3c29300a6c88ccd98256949ca7a6f6 WORKDIR /goroot/src ENV GOHOSTARCH="$TARGETARCH" -RUN echo $GOHOSTARCH && ./make.bash +RUN ./make.bssh ENV PATH="/goroot/bin:$PATH" RUN go version diff --git a/static-builder.Dockerfile b/static-builder.Dockerfile index 93a677347..723b12f7a 100644 --- a/static-builder.Dockerfile +++ b/static-builder.Dockerfile @@ -81,7 +81,7 @@ RUN git config --global user.email "build@example.com" && \ git revert 3560cf0afb3c29300a6c88ccd98256949ca7a6f6 WORKDIR /goroot/src ENV GOHOSTARCH="$TARGETARCH" -RUN echo $GOHOSTARCH && ./make.bash +RUN ./make.bash ENV PATH="/goroot/bin:$PATH" RUN go version From 46b3cc75630662bc050b93a9003926437cec1ad9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Wed, 10 Jul 2024 23:48:01 +0200 Subject: [PATCH 09/10] fix --- alpine.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/alpine.Dockerfile b/alpine.Dockerfile index 6d74cf62a..af0140bd5 100644 --- a/alpine.Dockerfile +++ b/alpine.Dockerfile @@ -82,7 +82,7 @@ RUN git config --global user.email "build@example.com" && \ git revert 3560cf0afb3c29300a6c88ccd98256949ca7a6f6 WORKDIR /goroot/src ENV GOHOSTARCH="$TARGETARCH" -RUN ./make.bssh +RUN ./make.bash ENV PATH="/goroot/bin:$PATH" RUN go version From 71d0b499c2e7478e4bb63dfb60b211c4dc25525e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Thu, 11 Jul 2024 09:31:29 +0200 Subject: [PATCH 10/10] wip --- docker-bake.hcl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker-bake.hcl b/docker-bake.hcl index 75f48e01c..693b45c24 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -91,7 +91,8 @@ target "default" { platforms = os == "alpine" ? [ "linux/amd64", "linux/386", - "linux/arm/v6", + # FIXME: armv6 doesn't build in GitHub actions because we use a custom Go build + #"linux/arm/v6", "linux/arm/v7", "linux/arm64", ] : [