mirror of
https://github.com/jhd3197/ServerKit.git
synced 2026-11-09 05:24:49 +09:00
- agent/Dockerfile: bump golang base from 1.21 to 1.23 to match go.mod - agent-release.yml: pin WiX to 5.0.2 to avoid the OSMF EULA prompt introduced in WiX 7 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
82 lines
2.1 KiB
Docker
82 lines
2.1 KiB
Docker
# ServerKit Agent - Docker Image
|
|
# Multi-stage build for minimal image size
|
|
|
|
# ============================================
|
|
# Stage 1: Build
|
|
# ============================================
|
|
FROM golang:1.23-alpine AS builder
|
|
|
|
# Install build dependencies
|
|
RUN apk add --no-cache git ca-certificates tzdata
|
|
|
|
WORKDIR /build
|
|
|
|
# Copy go mod files first for better layer caching
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
|
|
# Copy source code
|
|
COPY . .
|
|
|
|
# Build arguments for version info
|
|
ARG VERSION=dev
|
|
ARG BUILD_TIME=unknown
|
|
ARG GIT_COMMIT=unknown
|
|
|
|
# Build the agent binary
|
|
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
|
|
-ldflags="-w -s \
|
|
-X main.Version=${VERSION} \
|
|
-X main.BuildTime=${BUILD_TIME} \
|
|
-X main.GitCommit=${GIT_COMMIT}" \
|
|
-o serverkit-agent \
|
|
./cmd/agent
|
|
|
|
# ============================================
|
|
# Stage 2: Runtime
|
|
# ============================================
|
|
FROM alpine:3.19
|
|
|
|
# Install runtime dependencies
|
|
RUN apk add --no-cache \
|
|
ca-certificates \
|
|
tzdata \
|
|
docker-cli \
|
|
docker-cli-compose
|
|
|
|
# Create non-root user
|
|
RUN addgroup -g 1000 serverkit && \
|
|
adduser -u 1000 -G serverkit -s /bin/sh -D serverkit
|
|
|
|
# Create directories
|
|
RUN mkdir -p /etc/serverkit-agent /var/log/serverkit-agent && \
|
|
chown -R serverkit:serverkit /etc/serverkit-agent /var/log/serverkit-agent
|
|
|
|
# Copy binary from builder
|
|
COPY --from=builder /build/serverkit-agent /usr/local/bin/serverkit-agent
|
|
|
|
# Set permissions
|
|
RUN chmod +x /usr/local/bin/serverkit-agent
|
|
|
|
# Volume for configuration persistence
|
|
VOLUME ["/etc/serverkit-agent"]
|
|
|
|
# Volume for logs
|
|
VOLUME ["/var/log/serverkit-agent"]
|
|
|
|
# Health check
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
|
CMD serverkit-agent status || exit 1
|
|
|
|
# Labels
|
|
LABEL org.opencontainers.image.title="ServerKit Agent" \
|
|
org.opencontainers.image.description="Remote server management agent for ServerKit" \
|
|
org.opencontainers.image.vendor="ServerKit" \
|
|
org.opencontainers.image.source="https://github.com/jhd3197/ServerKit"
|
|
|
|
# Default user (can be overridden for Docker socket access)
|
|
USER serverkit
|
|
|
|
ENTRYPOINT ["serverkit-agent"]
|
|
CMD ["start"]
|