init commit
This commit is contained in:
+44
@@ -0,0 +1,44 @@
|
||||
# Use a smaller base image for the build stage
|
||||
FROM golang:alpine AS builder
|
||||
|
||||
LABEL stage=gobuilder
|
||||
|
||||
ARG TARGETARCH
|
||||
ENV CGO_ENABLED=0 GOOS=linux GOARCH=${TARGETARCH}
|
||||
|
||||
# Combine apk commands into one to reduce layer size
|
||||
RUN apk update --no-cache && apk add --no-cache tzdata ca-certificates
|
||||
|
||||
WORKDIR /build
|
||||
|
||||
# Copy go.mod and go.sum first to take advantage of Docker caching
|
||||
COPY go.mod go.sum ./
|
||||
RUN go mod download
|
||||
|
||||
# Copy the rest of the application code
|
||||
COPY . .
|
||||
|
||||
# Build the binary with optimization flags to reduce binary size
|
||||
RUN go build -ldflags="-s -w" -o /app/ppanel ppanel.go
|
||||
|
||||
# Final minimal image
|
||||
FROM scratch
|
||||
|
||||
# Copy CA certificates and timezone data
|
||||
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
|
||||
COPY --from=builder /usr/share/zoneinfo/Asia/Shanghai /usr/share/zoneinfo/Asia/Shanghai
|
||||
|
||||
ENV TZ=Asia/Shanghai
|
||||
|
||||
# Set working directory and copy binary
|
||||
WORKDIR /app
|
||||
|
||||
COPY --from=builder /app/ppanel /app/ppanel
|
||||
COPY --from=builder /etc /app/etc
|
||||
|
||||
# Expose the port (optional)
|
||||
EXPOSE 8080
|
||||
|
||||
# Specify entry point
|
||||
ENTRYPOINT ["/app/ppanel"]
|
||||
CMD ["run", "--config", "etc/ppanel.yaml"]
|
||||
Reference in New Issue
Block a user