48 lines
1.5 KiB
Docker
48 lines
1.5 KiB
Docker
# syntax=docker/dockerfile:1.20.0
|
|
|
|
FROM golang:1.26.7-alpine3.23@sha256:b17af760035fc2f338eed92d448a6c67f2d45438844fc6c60678fa5f99e44b57 AS builder
|
|
|
|
ENV CGO_ENABLED=0
|
|
ENV GOTOOLCHAIN=local
|
|
|
|
ARG CADDY_VERSION=v2.11.4
|
|
ARG GRPC_GO_VERSION=v1.82.1
|
|
ARG X_TEXT_VERSION=v0.40.0
|
|
|
|
WORKDIR /src
|
|
|
|
RUN go mod init who-need-help/caddy-build \
|
|
&& go get "github.com/caddyserver/caddy/v2/cmd/caddy@${CADDY_VERSION}" \
|
|
&& go get "google.golang.org/grpc@${GRPC_GO_VERSION}" \
|
|
&& go get "golang.org/x/text@${X_TEXT_VERSION}" \
|
|
&& test "$(go list -m -f '{{.Version}}' google.golang.org/grpc)" = "$GRPC_GO_VERSION" \
|
|
&& test "$(go list -m -f '{{.Version}}' golang.org/x/text)" = "$X_TEXT_VERSION" \
|
|
&& go build \
|
|
-trimpath \
|
|
-ldflags="-s -w -X github.com/caddyserver/caddy/v2.CustomVersion=${CADDY_VERSION}-wnh-go1.26.7-grpc1.82.1-xtext0.40.0" \
|
|
-o /out/caddy \
|
|
github.com/caddyserver/caddy/v2/cmd/caddy
|
|
|
|
RUN mkdir -p /rootfs/data/caddy /rootfs/config/caddy /rootfs/tmp \
|
|
&& chown -R 1000:1000 /rootfs
|
|
|
|
FROM scratch
|
|
|
|
ENV XDG_CONFIG_HOME=/config
|
|
ENV XDG_DATA_HOME=/data
|
|
ENV HOME=/tmp
|
|
|
|
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
|
|
COPY --from=builder /out/caddy /usr/bin/caddy
|
|
COPY --from=builder --chown=1000:1000 /rootfs/data /data
|
|
COPY --from=builder --chown=1000:1000 /rootfs/config /config
|
|
COPY --from=builder --chown=1000:1000 /rootfs/tmp /tmp
|
|
|
|
USER 1000:1000
|
|
WORKDIR /srv
|
|
|
|
EXPOSE 80 443 443/udp 2019
|
|
|
|
ENTRYPOINT ["/usr/bin/caddy"]
|
|
CMD ["run", "--config", "/etc/caddy/Caddyfile", "--adapter", "caddyfile"]
|