mautrix-signal/Dockerfile

59 lines
1.5 KiB
Text
Raw Normal View History

2023-07-21 14:06:41 -04:00
# -- Build libsignal (with Rust) --
2023-12-18 13:11:32 +02:00
FROM rust:1-alpine as rust-builder
RUN apk add --no-cache git make cmake protoc musl-dev g++ clang-dev
2023-07-21 14:06:41 -04:00
WORKDIR /build
# Copy all files needed for Rust build, and no Go files
COPY pkg/libsignalgo/libsignal/. pkg/libsignalgo/libsignal/.
COPY build-rust.sh .
2023-07-21 14:06:41 -04:00
ARG DBG=0
RUN ./build-rust.sh
2023-07-21 14:06:41 -04:00
# -- Build mautrix-signal (with Go) --
2024-12-10 14:51:43 +02:00
FROM golang:1-alpine3.21 AS go-builder
2023-12-18 13:11:32 +02:00
RUN apk add --no-cache git ca-certificates build-base olm-dev
2023-07-21 14:06:41 -04:00
WORKDIR /build
# Copy all files needed for Go build, and no Rust files
2023-12-18 13:11:32 +02:00
COPY *.go go.* *.yaml *.sh ./
2023-07-21 14:06:41 -04:00
COPY pkg/signalmeow/. pkg/signalmeow/.
COPY pkg/libsignalgo/* pkg/libsignalgo/
COPY pkg/libsignalgo/resources/. pkg/libsignalgo/resources/.
2024-08-07 02:22:41 +03:00
COPY pkg/msgconv/. pkg/msgconv/.
COPY pkg/signalid/. pkg/signalid/.
COPY pkg/connector/. pkg/connector/.
COPY cmd/. cmd/.
2023-07-21 14:06:41 -04:00
COPY .git .git
ARG DBG=0
2023-12-18 13:11:32 +02:00
ENV LIBRARY_PATH=.
COPY --from=rust-builder /build/pkg/libsignalgo/libsignal/target/*/libsignal_ffi.a ./
RUN <<EOF
if [ "$DBG" = 1 ]; then
go install github.com/go-delve/delve/cmd/dlv@latest
else
touch /go/bin/dlv
fi
EOF
2023-12-18 13:11:32 +02:00
RUN ./build-go.sh
2023-07-21 14:06:41 -04:00
# -- Run mautrix-signal --
2024-12-10 14:51:43 +02:00
FROM alpine:3.21
2023-07-21 14:06:41 -04:00
ENV UID=1337 \
GID=1337
2024-08-07 02:22:41 +03:00
RUN apk add --no-cache ffmpeg su-exec ca-certificates bash jq curl yq-go olm
2023-07-21 14:06:41 -04:00
COPY --from=go-builder /build/mautrix-signal /usr/bin/mautrix-signal
COPY --from=go-builder /build/docker-run.sh /docker-run.sh
COPY --from=go-builder /go/bin/dlv /usr/bin/dlv
2023-07-21 14:06:41 -04:00
VOLUME /data
ARG DBG
ARG DBGWAIT=0
ENV DBG=${DBG} DBGWAIT=${DBGWAIT}
RUN echo "Debug mode: DBG=${DBG} DBGWAIT=${DBGWAIT}"
2023-07-21 14:06:41 -04:00
CMD ["/docker-run.sh"]