5465 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / Dockerfile.ech0-lab ECH0-LAB
FROM alpine:latest AS source

ARG ECH0_TAG=4.2.1

RUN apk add --no-cache git ca-certificates
RUN git clone --depth 1 --branch "v${ECH0_TAG}" https://github.com/lin-snow/Ech0.git /src

FROM node:25-alpine AS frontend-builder

WORKDIR /web

RUN npm install -g [email protected]

COPY --from=source /src/web/package.json /src/web/pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile

COPY --from=source /src/web/ ./
RUN pnpm run build --mode production

FROM golang:1.26.1-alpine AS backend-builder

RUN apk add --no-cache git ca-certificates tzdata gcc musl-dev

WORKDIR /app

COPY --from=source /src/go.mod /src/go.sum ./
RUN go mod download

COPY --from=source /src/ ./
COPY --from=frontend-builder /template/dist /app/template/dist

ARG TARGETOS
ARG TARGETARCH

RUN CGO_ENABLED=1 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build \
    -tags netgo \
    -ldflags="-linkmode external -extldflags '-static' -w -s" \
    -o ech0 ./cmd/ech0

FROM alpine:latest

WORKDIR /app
ENV TZ=Asia/Shanghai

RUN mkdir -p /app/data /app/backup /app/template

COPY --from=backend-builder /app/ech0 /app/ech0

RUN chmod +x /app/ech0

EXPOSE 6277
EXPOSE 6278

ENTRYPOINT ["/app/ech0"]
CMD ["serve"]