Files
olcrtc/Dockerfile

60 lines
1.7 KiB
Docker

# syntax=docker/dockerfile:1.7
ARG GO_VERSION=1.25
ARG ALPINE_VERSION=3.22
FROM golang:${GO_VERSION}-alpine${ALPINE_VERSION} AS build
WORKDIR /src
RUN apk add --no-cache ca-certificates git
COPY go.mod go.sum ./
RUN --mount=type=cache,target=/go/pkg/mod \
go mod download
COPY . .
ARG TARGETOS=linux
ARG TARGETARCH=amd64
RUN --mount=type=cache,target=/go/pkg/mod \
--mount=type=cache,target=/root/.cache/go-build \
CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} \
go build -trimpath -ldflags="-s -w" -o /out/olcrtc ./cmd/olcrtc
FROM alpine:${ALPINE_VERSION} AS runtime
RUN apk add --no-cache ca-certificates ffmpeg tzdata && \
addgroup -S olcrtc && \
mkdir -p /usr/share/olcrtc /var/lib/olcrtc && \
adduser -S -D -h /var/lib/olcrtc -s /sbin/nologin -G olcrtc olcrtc && \
chown -R olcrtc:olcrtc /usr/share/olcrtc /var/lib/olcrtc
COPY --chown=olcrtc:olcrtc data /usr/share/olcrtc
COPY --from=build /out/olcrtc /usr/local/bin/olcrtc
COPY script/docker/olcrtc-entrypoint.sh /usr/local/bin/olcrtc-entrypoint
COPY script/docker/olcrtc-healthcheck.sh /usr/local/bin/olcrtc-healthcheck
RUN chmod 0755 /usr/local/bin/olcrtc /usr/local/bin/olcrtc-entrypoint /usr/local/bin/olcrtc-healthcheck
USER olcrtc:olcrtc
WORKDIR /var/lib/olcrtc
ENV OLCRTC_MODE=srv \
OLCRTC_CARRIER= \
OLCRTC_TRANSPORT=datachannel \
OLCRTC_DATA_DIR=/usr/share/olcrtc \
OLCRTC_DNS=8.8.8.8:53 \
OLCRTC_KEY_FILE=/var/lib/olcrtc/key.hex \
OLCRTC_SOCKS_HOST=127.0.0.1 \
OLCRTC_SOCKS_PORT=8808 \
OLCRTC_FFMPEG=ffmpeg
VOLUME ["/var/lib/olcrtc"]
HEALTHCHECK --interval=30s --timeout=3s --start-period=20s --retries=3 \
CMD ["/usr/local/bin/olcrtc-healthcheck"]
ENTRYPOINT ["/usr/local/bin/olcrtc-entrypoint"]