v2.2.7 aefe19e

Dockerfile RawHistoryFolder

1# Gordon v2 - Production Dockerfile
2# Multi-stage build for optimized container image
3
4# Build stage
5FROM golang:1.24-alpine AS builder
6
7# Install build dependencies
8RUN apk add --no-cache git ca-certificates tzdata
9
10# Set working directory
11WORKDIR /app
12
13# Copy go mod files
14COPY go.mod go.sum ./
15
16# Download dependencies
17RUN go mod download
18
19# Copy source code
20COPY . .
21
22# Build the binary
23RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
24    -ldflags='-w -s -extldflags "-static"' \
25    -a -installsuffix cgo \
26    -o gordon .
27
28# Runtime stage
29FROM alpine:latest
30
31# Install runtime dependencies
32RUN apk add --no-cache \
33    ca-certificates \
34    docker-cli \
35    curl \
36    wget \
37    tzdata \
38    && rm -rf /var/cache/apk/*
39
40# Create non-root user
41RUN adduser -D -s /bin/sh gordon
42
43# Set working directory
44WORKDIR /app
45
46# Copy binary from builder
47COPY --from=builder /app/gordon .
48
49# Create data directory
50RUN mkdir -p /data && chown gordon:gordon /data
51
52# Copy default configuration (optional)
53COPY --chown=gordon:gordon gordon.toml.example /app/gordon.toml.example
54
55# Switch to non-root user
56USER gordon
57
58# Expose ports
59EXPOSE 8080 5000
60
61# Health check
62HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
63    CMD wget --quiet --tries=1 --spider http://localhost:8080/health || exit 1
64
65# Default command
66CMD ["./gordon", "start"]
67
68# Metadata
69LABEL maintainer="bnemam"
70LABEL version="2.0"
71LABEL description="Event-driven container deployment platform"
72LABEL org.opencontainers.image.source="https://github.com/bnema/gordon"

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 7

Tags 106

↑↓ moveenter openesc close