8a94ffd58f
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
37 lines
1.8 KiB
Docker
37 lines
1.8 KiB
Docker
# Panel agent — production image.
|
|
# Build from the repo root: docker build -f deploy/Dockerfile.agent .
|
|
#
|
|
# ┌─────────────────────────────── SECURITY ───────────────────────────────┐
|
|
# │ The agent container mounts the HOST Docker socket (/var/run/docker.sock)│
|
|
# │ to create/manage game-server containers. Access to the docker socket │
|
|
# │ is equivalent to root on the host. Only run this on a machine you │
|
|
# │ fully control, and never expose the socket beyond this container. │
|
|
# └─────────────────────────────────────────────────────────────────────────┘
|
|
|
|
FROM golang:1.26 AS build
|
|
ARG VERSION=dev
|
|
WORKDIR /src
|
|
COPY . .
|
|
ENV CGO_ENABLED=0
|
|
RUN go build -trimpath \
|
|
-ldflags "-s -w -X github.com/dbledeez/panel/pkg/version.Version=${VERSION}" \
|
|
-o /out/agent ./agent/cmd/agent
|
|
|
|
# Not distroless: game-module install hooks may shell out (tar, unzip).
|
|
FROM debian:12-slim
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
ca-certificates tar unzip xz-utils \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
WORKDIR /opt/panel
|
|
COPY --from=build /out/agent /opt/panel/bin/agent
|
|
COPY --from=build /src/modules /opt/panel/modules
|
|
# Instance data, sidecar metadata, backups, pairing certs — persist this.
|
|
VOLUME ["/opt/panel/data"]
|
|
ENTRYPOINT ["/opt/panel/bin/agent"]
|
|
CMD ["--controller", "controller:8443", \
|
|
"--modules-dir", "./modules", \
|
|
"--data-root", "./data/instances", \
|
|
"--meta-dir", "./data/instance-meta", \
|
|
"--backup-dir", "./data/backups", \
|
|
"--cert-dir", "./data/certs"]
|