-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
86 lines (68 loc) · 2.76 KB
/
Copy pathDockerfile
File metadata and controls
86 lines (68 loc) · 2.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# syntax=docker/dockerfile:1
ARG DOCKER_HUB="docker.io"
ARG VERSION=dev
ARG COMMIT=unknown
ARG BUILD_TIME=unknown
FROM ${DOCKER_HUB}/golang:1.25-alpine AS go-builder
ARG VERSION
ARG COMMIT
ARG BUILD_TIME
RUN apk add --no-cache build-base git
WORKDIR /build/matrix-inline
ENV GOPATH=/go \
GOMODCACHE=/go/pkg/mod \
GOCACHE=/root/.cache/go-build
COPY matrix-inline/go.mod matrix-inline/go.sum ./
RUN --mount=type=cache,target=/go/pkg/mod \
go mod download
COPY matrix-inline/cmd ./cmd
COPY matrix-inline/pkg ./pkg
RUN --mount=type=cache,target=/go/pkg/mod \
--mount=type=cache,target=/root/.cache/go-build \
go build -tags goolm \
-ldflags "-s -w -X main.Tag=${VERSION} -X main.Commit=${COMMIT} -X main.BuildTime=${BUILD_TIME}" \
-o /out/matrix-inline ./cmd/matrix-inline
FROM ${DOCKER_HUB}/rust:1.96-alpine AS rust-builder
RUN apk add --no-cache build-base protobuf-dev sqlite-dev sqlite-static
WORKDIR /build
ENV CARGO_HOME=/cargo \
CARGO_TARGET_DIR=/target
COPY inline-public/Cargo.toml inline-public/Cargo.lock inline-public/rust-toolchain.toml ./inline-public/
COPY inline-public/cli ./inline-public/cli
COPY inline-public/crates ./inline-public/crates
COPY matrix-inline/Cargo.toml matrix-inline/Cargo.lock matrix-inline/rust-toolchain.toml ./matrix-inline/
COPY matrix-inline/crates ./matrix-inline/crates
WORKDIR /build/matrix-inline
RUN --mount=type=cache,target=/cargo/registry \
--mount=type=cache,target=/cargo/git \
--mount=type=cache,target=/target \
cargo build --release -p matrix-inline-adapter && \
cp /target/release/matrix-inline-adapter /out-matrix-inline-adapter
FROM ${DOCKER_HUB}/alpine:3.23
ARG VERSION
ARG COMMIT
ARG BUILD_TIME
LABEL org.opencontainers.image.title="matrix-inline" \
org.opencontainers.image.description="Matrix bridge for Inline" \
org.opencontainers.image.source="https://github.com/inline-chat/matrix-inline" \
org.opencontainers.image.licenses="Apache-2.0" \
org.opencontainers.image.version="${VERSION}" \
org.opencontainers.image.revision="${COMMIT}" \
org.opencontainers.image.created="${BUILD_TIME}"
ENV PUID=1337 \
PGID=1337 \
BRIDGEV2=1 \
RUST_LOG=info \
INLINE_SIDECAR_BIND=127.0.0.1:29342
RUN apk add --no-cache bash ca-certificates curl jq sqlite-libs su-exec yq-go
COPY --from=go-builder /out/matrix-inline /usr/bin/matrix-inline
COPY --from=rust-builder /out-matrix-inline-adapter /usr/bin/matrix-inline-adapter
COPY matrix-inline/docker-run.sh /docker-run.sh
COPY matrix-inline/assets /usr/share/matrix-inline/assets
RUN chmod +x /docker-run.sh
WORKDIR /data
VOLUME ["/data"]
EXPOSE 29343
HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \
CMD curl -fsS http://127.0.0.1:29342/health >/dev/null || exit 1
CMD ["/docker-run.sh"]