32 lines
850 B
Docker
32 lines
850 B
Docker
FROM golang:1.20-alpine
|
|
|
|
# Install build dependencies
|
|
RUN apk add --no-cache git tar gzip
|
|
|
|
# Set up the working directory
|
|
WORKDIR /app
|
|
|
|
# Copy Go module files
|
|
COPY go.mod ./
|
|
|
|
# Copy the source code
|
|
COPY main.go ./
|
|
|
|
# Build FreeBSD binary
|
|
RUN GOOS=freebsd GOARCH=amd64 CGO_ENABLED=0 go build -o tarballer-freebsd -ldflags="-s -w"
|
|
|
|
# Build macOS ARM64 binary for local testing
|
|
RUN GOOS=darwin GOARCH=arm64 CGO_ENABLED=0 go build -o tarballer-darwin -ldflags="-s -w"
|
|
|
|
# Build Linux binary for testing in container
|
|
RUN GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o tarballer-linux -ldflags="-s -w"
|
|
|
|
# Copy Linux binary for use in the container
|
|
RUN cp tarballer-linux /bin/tarballer && chmod +x /bin/tarballer
|
|
|
|
# Copy test script
|
|
COPY test/test.sh /bin/test.sh
|
|
RUN chmod +x /bin/test.sh
|
|
|
|
# Default working directory for running tests
|
|
WORKDIR /workdir |