mirror of
https://github.com/jhd3197/ServerKit.git
synced 2026-10-30 08:36:55 +09:00
Introduces Dockerfile, .dockerignore, and docker-compose.yml for containerized deployment of the agent. Adds packaging scripts for .deb, .rpm, and .msi installers, and updates the GitHub Actions workflow to build and release these formats. The Makefile and README are updated with Docker and package build instructions. The integration plan is updated to reflect completion of installation and distribution features.
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.21-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/serverkit/serverkit"
|
|
|
|
# Default user (can be overridden for Docker socket access)
|
|
USER serverkit
|
|
|
|
ENTRYPOINT ["serverkit-agent"]
|
|
CMD ["start"]
|