diff --git a/.dockerignore b/.dockerignore index a192236b..8a1b0840 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,6 @@ .git .idea +.github anubis-source **/node_modules **/.next @@ -9,3 +10,10 @@ anubis-source **/coverage **/*.db **/*.log +tmp +logs +.DS_Store +.env +.env.* +docker-compose*.yml + diff --git a/openflare_agent/Dockerfile b/openflare_agent/Dockerfile index cf4f101a..2811cfad 100644 --- a/openflare_agent/Dockerfile +++ b/openflare_agent/Dockerfile @@ -1,3 +1,4 @@ +# syntax=docker/dockerfile:1.7 ARG VERSION=dev FROM golang:1.25-alpine AS builder @@ -10,12 +11,20 @@ ENV CGO_ENABLED=0 \ GOOS=${TARGETOS} \ GOARCH=${TARGETARCH} +WORKDIR /build +COPY openflare_server/go.mod openflare_server/go.sum ./openflare_server/ +COPY openflare_agent/go.mod openflare_agent/go.sum ./openflare_agent/ +WORKDIR /build/openflare_agent +RUN --mount=type=cache,target=/go/pkg/mod \ + go mod download + WORKDIR /build COPY openflare_server ./openflare_server COPY openflare_agent ./openflare_agent WORKDIR /build/openflare_agent -RUN go mod download -RUN go build -trimpath -ldflags "-s -w -X 'openflare-agent/internal/config.Version=$VERSION'" -o /build/openflare-agent ./cmd/agent +RUN --mount=type=cache,target=/go/pkg/mod \ + --mount=type=cache,target=/root/.cache/go-build \ + go build -trimpath -ldflags "-s -w -X 'openflare-agent/internal/config.Version=$VERSION'" -o /build/openflare-agent ./cmd/agent FROM openresty/openresty:alpine @@ -32,3 +41,4 @@ COPY --from=builder /build/openflare-agent /usr/local/bin/openflare-agent EXPOSE 80 443 18081 ENTRYPOINT ["/usr/local/bin/openflare-agent"] CMD ["-config", "/etc/openflare/agent.json"] + diff --git a/openflare_relay/Dockerfile b/openflare_relay/Dockerfile index 08aad498..350fbecf 100644 --- a/openflare_relay/Dockerfile +++ b/openflare_relay/Dockerfile @@ -1,3 +1,4 @@ +# syntax=docker/dockerfile:1.7 ARG VERSION=dev FROM golang:1.25-alpine AS builder @@ -5,13 +6,19 @@ FROM golang:1.25-alpine AS builder ARG VERSION WORKDIR /build +COPY openflare_server/go.mod openflare_server/go.sum /openflare_server/ +COPY openflare_relay/go.mod openflare_relay/go.sum /openflare_relay/ +WORKDIR /openflare_relay +RUN --mount=type=cache,target=/go/pkg/mod \ + go mod download -COPY openflare_relay/go.mod openflare_relay/go.sum ./ +WORKDIR /build COPY openflare_server /openflare_server COPY openflare_relay /openflare_relay - WORKDIR /openflare_relay -RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags "-s -w -X 'openflare-relay/internal/config.Version=$VERSION'" -o openflare-relay ./cmd/relay +RUN --mount=type=cache,target=/go/pkg/mod \ + --mount=type=cache,target=/root/.cache/go-build \ + CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags "-s -w -X 'openflare-relay/internal/config.Version=$VERSION'" -o openflare-relay ./cmd/relay # Final runtime image FROM fatedier/frps:v0.69.0 @@ -25,3 +32,4 @@ ENV OPENFLARE_FRPS_PATH=/usr/bin/frps ENV OPENFLARE_DATA_DIR=/var/lib/openflare-relay ENTRYPOINT ["/usr/local/bin/openflare-relay"] + diff --git a/openflare_server/.dockerignore b/openflare_server/.dockerignore index a6ed8cd9..8c561426 100644 --- a/openflare_server/.dockerignore +++ b/openflare_server/.dockerignore @@ -1,10 +1,16 @@ +.git +.github +node_modules web/node_modules web/.next web/build web/out - -upload +dist +tmp logs - -.git -.github +upload +*.log +.DS_Store +.env +.env.* +docker-compose*.yml diff --git a/openflare_server/Dockerfile b/openflare_server/Dockerfile index 8b1e62e5..d5dd33bd 100644 --- a/openflare_server/Dockerfile +++ b/openflare_server/Dockerfile @@ -1,38 +1,38 @@ +# syntax=docker/dockerfile:1.7 ARG VERSION=dev - -FROM node:20 AS builder - +FROM node:20 AS web-builder ARG VERSION - WORKDIR /build -COPY ./web/package.json ./ -COPY ./web/pnpm-lock.yaml ./ -RUN corepack enable && pnpm install --frozen-lockfile +RUN corepack enable +COPY ./web/package.json ./web/pnpm-lock.yaml ./ +RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store \ + pnpm install --frozen-lockfile COPY ./web ./ -RUN NEXT_PUBLIC_APP_VERSION="$VERSION" pnpm build - -FROM golang:1.25 AS builder2 +RUN --mount=type=cache,id=next-cache,target=/build/.next/cache \ + NEXT_PUBLIC_APP_VERSION="$VERSION" pnpm build +FROM golang:1.25 AS go-builder ARG VERSION - ENV GO111MODULE=on \ CGO_ENABLED=0 \ GOOS=linux - WORKDIR /build +COPY go.mod go.sum ./ +RUN --mount=type=cache,target=/go/pkg/mod \ + go mod download COPY . . -COPY --from=builder /build/build ./web/build -RUN go mod download -RUN go build -trimpath -ldflags "-s -w -X 'openflare/common.Version=$VERSION'" -o openflare +COPY --from=web-builder /build/build ./web/build +RUN --mount=type=cache,target=/go/pkg/mod \ + --mount=type=cache,target=/root/.cache/go-build \ + go build -trimpath \ + -ldflags "-s -w -X 'openflare/common.Version=$VERSION'" \ + -o openflare -FROM alpine - -RUN apk update \ - && apk upgrade \ - && apk add --no-cache ca-certificates tzdata \ +FROM alpine:latest +RUN apk add --no-cache ca-certificates tzdata \ && update-ca-certificates 2>/dev/null || true ENV PORT=3000 -COPY --from=builder2 /build/openflare / +COPY --from=go-builder /build/openflare /openflare EXPOSE 3000 WORKDIR /data ENTRYPOINT ["/openflare"] diff --git a/openflared/Dockerfile b/openflared/Dockerfile index 916a9bb0..5cb02307 100644 --- a/openflared/Dockerfile +++ b/openflared/Dockerfile @@ -1,3 +1,4 @@ +# syntax=docker/dockerfile:1.7 ARG VERSION=dev FROM golang:1.25-alpine AS builder @@ -8,11 +9,14 @@ WORKDIR /build COPY openflared/go.mod openflared/go.sum ./ COPY openflare_server/go.mod openflare_server/go.sum ../openflare_server/ -RUN go mod download +RUN --mount=type=cache,target=/go/pkg/mod \ + go mod download COPY openflare_server/ ../openflare_server/ COPY openflared/ . -RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags "-s -w -X 'openflare-flared/internal/config.Version=$VERSION'" -o flared ./cmd/flared +RUN --mount=type=cache,target=/go/pkg/mod \ + --mount=type=cache,target=/root/.cache/go-build \ + CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags "-s -w -X 'openflare-flared/internal/config.Version=$VERSION'" -o flared ./cmd/flared # Final runtime image FROM fatedier/frpc:v0.69.0 @@ -27,3 +31,4 @@ ENV OPENFLARE_FRPC_PATH=/usr/bin/frpc ENTRYPOINT ["/app/flared"] CMD [] +