Skip to content

Commit 5fd2adf

Browse files
committed
Update: Dockerfiles To include Global PKG in build runtime
1 parent d299465 commit 5fd2adf

5 files changed

Lines changed: 73 additions & 74 deletions

File tree

compute-agent/Dockerfile

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,46 @@
11
# syntax=docker/dockerfile:1.7
22

3-
ARG GO_VERSION=1.24.13
3+
ARG GO_VERSION=1.25
44
ARG VERSION=1.0.0
55

66
FROM golang:${GO_VERSION}-bookworm AS builder
77
WORKDIR /src
88

9-
COPY go.mod go.sum ./
9+
COPY pkg/go.mod pkg/go.sum ./pkg/
10+
COPY compute-agent/go.mod compute-agent/go.sum ./compute-agent/
11+
12+
WORKDIR /src/compute-agent
1013
RUN --mount=type=cache,target=/go/pkg/mod \
1114
go mod download
1215

13-
COPY . .
16+
WORKDIR /src
17+
COPY pkg ./pkg
18+
COPY compute-agent ./compute-agent
1419

20+
WORKDIR /src/compute-agent
1521
RUN --mount=type=cache,target=/go/pkg/mod \
1622
--mount=type=cache,target=/root/.cache/go-build \
1723
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
1824
go build -trimpath -ldflags "-s -w -X main.version=${VERSION}" \
1925
-o /out/persys-agent ./cmd/agent
2026

27+
# --- runtime stages unchanged from here down ---
2128
FROM debian:bookworm-slim AS runtime-base
2229
RUN apt-get update && apt-get install -y --no-install-recommends \
23-
ca-certificates \
24-
docker.io \
25-
qemu-utils \
26-
genisoimage \
27-
libvirt-clients \
30+
ca-certificates docker.io qemu-utils genisoimage libvirt-clients \
2831
&& rm -rf /var/lib/apt/lists/*
29-
3032
RUN useradd -r -u 1000 -g 0 -m -s /usr/sbin/nologin persys && \
3133
mkdir -p /var/lib/persys /etc/persys/certs && \
3234
chown -R persys:root /var/lib/persys /etc/persys
33-
3435
COPY --from=builder /out/persys-agent /usr/local/bin/persys-agent
35-
3636
VOLUME ["/var/lib/persys", "/etc/persys"]
3737
EXPOSE 50051 8080
38-
3938
USER persys
40-
4139
ENV PERSYS_STATE_PATH=/var/lib/persys/state.db \
4240
PERSYS_TLS_CERT=/etc/persys/certs/agent.crt \
4341
PERSYS_TLS_KEY=/etc/persys/certs/agent.key \
4442
PERSYS_TLS_CA=/etc/persys/certs/ca.crt \
4543
PERSYS_LOG_LEVEL=info
46-
4744
ENTRYPOINT ["/usr/local/bin/persys-agent"]
4845

49-
# Default optimized runtime image.
50-
FROM runtime-base AS runtime
51-
52-
# Optional full runtime image with local daemons/tools for all-in-one test environments.
53-
FROM runtime-base AS full-runtime
54-
USER root
55-
RUN apt-get update && apt-get install -y --no-install-recommends \
56-
qemu-kvm \
57-
libvirt-daemon-system \
58-
&& rm -rf /var/lib/apt/lists/*
59-
USER persys
46+
FROM runtime-base AS runtime

persys-automation/Dockerfile

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,21 @@
1-
FROM golang:1.24.13 AS build
1+
FROM golang:1.25 AS build
22
WORKDIR /src
3-
COPY . .
3+
4+
# go.mod/go.sum first for layer caching. Both are needed because
5+
# persys-automation/go.mod does: replace github.com/persys-dev/persys-cloud/pkg => ../pkg
6+
COPY pkg/go.mod pkg/go.sum ./pkg/
7+
COPY persys-automation/go.mod persys-automation/go.sum ./persys-automation/
8+
9+
WORKDIR /src/persys-automation
410
RUN go mod download
11+
12+
WORKDIR /src
13+
COPY pkg ./pkg
14+
COPY persys-automation ./persys-automation
15+
16+
WORKDIR /src/persys-automation
517
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /out/persys-automation ./cmd/automation
618

719
FROM alpine:latest
820
COPY --from=build /out/persys-automation /usr/local/bin/persys-automation
9-
ENTRYPOINT ["/usr/local/bin/persys-automation"]
21+
ENTRYPOINT ["/usr/local/bin/persys-automation"]

persys-forgery/Dockerfile

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,27 @@
1-
FROM golang:1.24-alpine AS builder
2-
WORKDIR /app
1+
FROM golang:1.25-alpine AS builder
2+
WORKDIR /src
3+
4+
# go.mod/go.sum first for layer caching. Both are needed because
5+
# persys-forgery/go.mod does: replace github.com/persys-dev/persys-cloud/pkg => ../pkg
6+
COPY pkg/go.mod pkg/go.sum ./pkg/
7+
COPY persys-forgery/go.mod persys-forgery/go.sum ./persys-forgery/
38

4-
# Copy go.mod and go.sum to download dependencies
5-
COPY go.mod go.sum ./
9+
WORKDIR /src/persys-forgery
610
RUN go mod download
711

8-
COPY . .
12+
WORKDIR /src
13+
COPY pkg ./pkg
14+
COPY persys-forgery ./persys-forgery
915

16+
WORKDIR /src/persys-forgery
1017
RUN go build -o persys-forgery ./cmd/main.go
1118

12-
FROM alpine:3.19
13-
19+
FROM alpine:latest
1420
WORKDIR /app
1521

16-
COPY --from=builder /app/persys-forgery /app/persys-forgery
17-
COPY config.yaml /app/config.yaml
22+
COPY --from=builder /src/persys-forgery/persys-forgery /app/persys-forgery
23+
COPY --from=builder /src/persys-forgery/config.yaml /app/config.yaml
1824

1925
RUN apk add git
20-
2126
EXPOSE 8080
22-
23-
CMD ["/app/persys-forgery"]
27+
CMD ["/app/persys-forgery"]

persys-gateway/Dockerfile

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,28 @@
1-
FROM golang:1.24-alpine AS build
1+
FROM golang:1.25-alpine AS build
2+
WORKDIR /src
23

3-
WORKDIR /app
4+
# go.mod/go.sum first for layer caching. Both are needed because
5+
# persys-gateway/go.mod does: replace github.com/persys-dev/persys-cloud/pkg => ../pkg
6+
COPY pkg/go.mod pkg/go.sum ./pkg/
7+
COPY persys-gateway/go.mod persys-gateway/go.sum ./persys-gateway/
48

5-
# Copy go.mod and go.sum to download dependencies
6-
COPY go.mod go.sum ./
9+
WORKDIR /src/persys-gateway
710
RUN go mod download
811

9-
# Copy the rest of the application code
10-
COPY . .
11-
12-
RUN cd cmd && go build -o main
12+
WORKDIR /src
13+
COPY pkg ./pkg
14+
COPY persys-gateway ./persys-gateway
1315

14-
FROM alpine:3.19 AS server
16+
WORKDIR /src/persys-gateway
17+
RUN cd cmd && go build -o persys-gateway
1518

19+
FROM alpine:latest AS server
1620
WORKDIR /app
1721

18-
COPY --from=build /app/config.yaml .
19-
COPY --from=build /app/cluster.yaml .
20-
21-
COPY --from=build /app/cmd/main .
22-
23-
RUN chmod +x ./main
22+
COPY --from=build /src/persys-gateway/config.yaml .
23+
COPY --from=build /src/persys-gateway/cluster.yaml .
24+
COPY --from=build /src/persys-gateway/cmd/persys-gateway .
2425

26+
RUN chmod +x ./persys-gateway
2527
EXPOSE 8551
26-
27-
CMD [ "./main" ]
28+
CMD [ "./persys-gateway" ]

persys-scheduler/Dockerfile

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,25 @@
11
# Stage 1: Build the application
2-
FROM golang:1.24-alpine AS builder
2+
FROM golang:1.25-alpine AS builder
3+
WORKDIR /src
34

4-
# Set the working directory
5-
WORKDIR /app
5+
# go.mod/go.sum first for layer caching. Both are needed because
6+
# persys-scheduler/go.mod does: replace github.com/persys-dev/persys-cloud/pkg => ../pkg
7+
COPY pkg/go.mod pkg/go.sum ./pkg/
8+
COPY persys-scheduler/go.mod persys-scheduler/go.sum ./persys-scheduler/
69

7-
# Copy go.mod and go.sum to download dependencies
8-
COPY go.mod go.sum ./
10+
WORKDIR /src/persys-scheduler
911
RUN go mod download
1012

11-
# Copy the rest of the application code
12-
COPY . .
13+
WORKDIR /src
14+
COPY pkg ./pkg
15+
COPY persys-scheduler ./persys-scheduler
1316

14-
# Build the application
17+
WORKDIR /src/persys-scheduler
1518
RUN CGO_ENABLED=0 GOOS=linux go build -o persys-scheduler ./cmd/scheduler
1619

1720
# Stage 2: Create the final image
1821
FROM alpine:latest
19-
20-
# Set the working directory
2122
WORKDIR /root/
22-
23-
# Copy the binary from the builder stage
24-
COPY --from=builder /app/persys-scheduler .
25-
26-
# Expose the port the scheduler listens on
23+
COPY --from=builder /src/persys-scheduler/persys-scheduler .
2724
EXPOSE 8084
28-
29-
# Command to run the scheduler
3025
CMD ["./persys-scheduler"]

0 commit comments

Comments
 (0)