Add missing Dockerfile.
This commit is contained in:
38
Dockerfile
Normal file
38
Dockerfile
Normal file
@@ -0,0 +1,38 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
|
||||
# ----- Builder stage: build all cmd/... tools -----
|
||||
FROM golang:1.24-alpine AS builder
|
||||
|
||||
# Install necessary build dependencies for fetching modules
|
||||
RUN apk add --no-cache git ca-certificates && update-ca-certificates
|
||||
|
||||
WORKDIR /src
|
||||
|
||||
# Cache modules
|
||||
COPY go.mod go.sum ./
|
||||
RUN --mount=type=cache,target=/go/pkg/mod \
|
||||
go mod download
|
||||
|
||||
# Copy the rest of the source
|
||||
COPY . .
|
||||
|
||||
# Build and install all commands under ./cmd/... into /out
|
||||
ENV CGO_ENABLED=0
|
||||
ENV GOBIN=/out
|
||||
RUN --mount=type=cache,target=/go/pkg/mod \
|
||||
go install ./cmd/...
|
||||
|
||||
# ----- Final runtime image: minimal alpine with tools installed -----
|
||||
FROM alpine:3.20
|
||||
|
||||
# Ensure common utilities are present
|
||||
RUN apk add --no-cache bash curl ca-certificates && update-ca-certificates
|
||||
|
||||
# Copy binaries from builder
|
||||
COPY --from=builder /out/ /usr/local/bin/
|
||||
|
||||
# Working directory for mounting the host CWD
|
||||
WORKDIR /work
|
||||
|
||||
# Default command shows available tools if run without args
|
||||
CMD ["/bin/sh", "-lc", "echo 'Tools installed:' && ls -1 /usr/local/bin && echo '\nMount your project with: docker run --rm -it -v $PWD:/work IMAGE <tool> ...'"]
|
||||
Reference in New Issue
Block a user