37 lines
1.2 KiB
Docker
37 lines
1.2 KiB
Docker
FROM golang:1-alpine AS builder
|
|
ARG BuiltAt
|
|
ARG GitCommit
|
|
ARG Version
|
|
WORKDIR /app
|
|
COPY . .
|
|
RUN apk add --no-cache bash git go gcc musl-dev curl fuse libxml2-utils
|
|
RUN go build -ldflags "-s -w -X 'github.com/debridmediamanager/zurg/internal/version.BuiltAt=$BuiltAt' -X 'github.com/debridmediamanager/zurg/internal/version.GitCommit=$GitCommit' -X 'github.com/debridmediamanager/zurg/internal/version.Version=$Version'" -o zurg ./cmd/zurg
|
|
|
|
# Obfuscation stage
|
|
FROM alpine:3 AS obfuscator
|
|
WORKDIR /app
|
|
COPY --from=builder /app/zurg .
|
|
RUN apk add --no-cache upx
|
|
RUN upx --brute zurg
|
|
# Create a health check script that extracts the port from the config file
|
|
COPY ./healthcheck.sh /app/healthcheck.sh
|
|
RUN chmod +x /app/healthcheck.sh
|
|
|
|
# Final stage
|
|
FROM alpine:3
|
|
WORKDIR /app
|
|
|
|
# Copy the obfuscated binary from the obfuscator stage
|
|
COPY --from=obfuscator /app/zurg .
|
|
COPY --from=obfuscator /app/healthcheck.sh .
|
|
|
|
# Copy the rest of the application files, including the config.yml
|
|
COPY config.example.yml /app/config.yml
|
|
|
|
# Install runtime dependencies and configure FUSE
|
|
RUN apk add curl python3
|
|
|
|
HEALTHCHECK --interval=60s --timeout=60s --start-period=10s --retries=10 CMD /app/healthcheck.sh
|
|
|
|
ENTRYPOINT ["./zurg"]
|