From 6b2a89913cd30044d71bb3d456b39b5ad6216201 Mon Sep 17 00:00:00 2001 From: Andrew Ferrazzutti Date: Fri, 2 Feb 2024 11:02:18 -0500 Subject: [PATCH 1/5] Allow debug build & remote debugging --- Dockerfile | 7 ++++++- Dockerfile.dev | 4 +++- build.sh | 5 ++++- docker-run.sh | 12 +++++++++++- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5931d5e..2092c21 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,9 @@ RUN apk add --no-cache git ca-certificates build-base su-exec olm-dev COPY . /build WORKDIR /build -RUN go build -o /usr/bin/mautrix-whatsapp +ARG DBG=0 +RUN /bin/bash -c 'if [[ $DBG -eq 1 ]]; then go install github.com/go-delve/delve/cmd/dlv@latest; else touch /go/bin/dlv; fi' +RUN ./build.sh -o /usr/bin/mautrix-whatsapp FROM alpine:3.19 @@ -16,6 +18,9 @@ RUN apk add --no-cache ffmpeg su-exec ca-certificates olm bash jq yq curl COPY --from=builder /usr/bin/mautrix-whatsapp /usr/bin/mautrix-whatsapp COPY --from=builder /build/example-config.yaml /opt/mautrix-whatsapp/example-config.yaml COPY --from=builder /build/docker-run.sh /docker-run.sh +COPY --from=builder /go/bin/dlv /usr/bin/dlv VOLUME /data +ARG DBGWAIT=0 +ENV DBGWAIT=${DBGWAIT} CMD ["/docker-run.sh"] diff --git a/Dockerfile.dev b/Dockerfile.dev index 4edc6ad..fa27bc1 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -4,7 +4,9 @@ RUN apk add --no-cache git ca-certificates build-base su-exec olm-dev bash jq yq COPY . /build WORKDIR /build -RUN go build -o /whatsapp +ARG DBG=0 +RUN /bin/bash -c 'if [[ $DBG -eq 1 ]]; then go install github.com/go-delve/delve/cmd/dlv@latest; else touch /go/bin/dlv; fi' +RUN ./build.sh -o /mautrix-whatsapp # Setup development stack using gow RUN go install github.com/mitranim/gow@latest diff --git a/build.sh b/build.sh index 2409c5b..c314e08 100755 --- a/build.sh +++ b/build.sh @@ -1,2 +1,5 @@ #!/bin/sh -go build -ldflags "-X main.Tag=$(git describe --exact-match --tags 2>/dev/null) -X main.Commit=$(git rev-parse HEAD) -X 'main.BuildTime=`date '+%b %_d %Y, %H:%M:%S'`'" "$@" +if [[ $DBG -eq 1 ]]; then + GO_GCFLAGS='all=-N -l' +fi +go build -gcflags="$GO_GCFLAGS" -ldflags="-X main.Tag=$(git describe --exact-match --tags 2>/dev/null) -X main.Commit=$(git rev-parse HEAD) -X 'main.BuildTime=`date '+%b %_d %Y, %H:%M:%S'`'" "$@" diff --git a/docker-run.sh b/docker-run.sh index 52cc185..d1fd54d 100755 --- a/docker-run.sh +++ b/docker-run.sh @@ -33,4 +33,14 @@ fi cd /data fixperms -exec su-exec $UID:$GID /usr/bin/mautrix-whatsapp + +EXE=/usr/bin/mautrix-whatsapp +DLV=/usr/bin/dlv +if [[ -x $DLV ]]; then + if [[ $DBGWAIT -ne 1 ]]; then + NOWAIT=1 + fi + EXE="${DLV} exec ${EXE} ${NOWAIT:+--continue --accept-multiclient} --api-version 2 --headless -l :4040" +fi + +exec su-exec $UID:$GID $EXE From 613c35fa5b0cc2a6f7a4f77cd5142d4677b8f752 Mon Sep 17 00:00:00 2001 From: Andrew Ferrazzutti Date: Mon, 5 Feb 2024 08:56:27 -0500 Subject: [PATCH 2/5] Omit debug info on release build --- build.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.sh b/build.sh index c314e08..63d7058 100755 --- a/build.sh +++ b/build.sh @@ -1,5 +1,7 @@ #!/bin/sh if [[ $DBG -eq 1 ]]; then GO_GCFLAGS='all=-N -l' +else + GO_LDFLAGS="-s -w ${GO_LDFLAGS}" fi go build -gcflags="$GO_GCFLAGS" -ldflags="-X main.Tag=$(git describe --exact-match --tags 2>/dev/null) -X main.Commit=$(git rev-parse HEAD) -X 'main.BuildTime=`date '+%b %_d %Y, %H:%M:%S'`'" "$@" From 1c641e2f1c7ee32919a8ca67e4bf123a94a57b15 Mon Sep 17 00:00:00 2001 From: Andrew Ferrazzutti Date: Mon, 5 Feb 2024 09:08:23 -0500 Subject: [PATCH 3/5] Use heredoc --- Dockerfile | 8 +++++++- Dockerfile.dev | 6 +++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2092c21..7c45b03 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,13 @@ RUN apk add --no-cache git ca-certificates build-base su-exec olm-dev COPY . /build WORKDIR /build ARG DBG=0 -RUN /bin/bash -c 'if [[ $DBG -eq 1 ]]; then go install github.com/go-delve/delve/cmd/dlv@latest; else touch /go/bin/dlv; fi' +RUN < Date: Mon, 5 Feb 2024 10:20:38 -0500 Subject: [PATCH 4/5] Use sh/POSIX expressions --- Dockerfile | 2 +- Dockerfile.dev | 2 +- build.sh | 2 +- docker-run.sh | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7c45b03..f2b065a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ COPY . /build WORKDIR /build ARG DBG=0 RUN < Date: Mon, 5 Feb 2024 12:50:23 -0500 Subject: [PATCH 5/5] Print debug mode in Docker build This allows the build cache to be invalidated when DBGWAIT is set --- Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f2b065a..e1f26bc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,6 +27,8 @@ COPY --from=builder /build/docker-run.sh /docker-run.sh COPY --from=builder /go/bin/dlv /usr/bin/dlv VOLUME /data +ARG DBG ARG DBGWAIT=0 -ENV DBGWAIT=${DBGWAIT} +ENV DBG=${DBG} DBGWAIT=${DBGWAIT} +RUN echo "Debug mode: DBG=${DBG} DBGWAIT=${DBGWAIT}" CMD ["/docker-run.sh"]