molecule-core/platform/Dockerfile
Hongming Wang 111c59da68 fix(ops): bake workspace-configs-templates into platform Docker image
Tenant machines were booting with no templates because the Dockerfile
only shipped the Go binary + migrations. The canvas showed "0 templates"
with an empty picker.

Changes:
- platform/Dockerfile: build context changed from ./platform to repo
  root so COPY can reach workspace-configs-templates/ alongside the
  Go source. COPY paths updated for platform/{go.mod,go.sum,*.go} and
  platform/migrations/.
- .github/workflows/publish-platform-image.yml: context: . (was
  ./platform), paths trigger now includes workspace-configs-templates/
  so template changes rebuild the image.

Phase A of the template-registry plan. Phase B adds a DB registry +
on-demand fetch for community templates (user pastes GitHub URL at
workspace creation time). The baked defaults always ship in the image
for zero-config tenant boot.

Verified: `docker build -f platform/Dockerfile -t test .` succeeds,
`docker run --rm test ls /workspace-configs-templates/` shows all 8
templates (autogen, claude-code-default, crewai, deepagents, gemini-cli,
hermes, langgraph, openclaw).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 01:54:47 -07:00

24 lines
998 B
Docker

# Build context: repo root (not ./platform) so we can COPY both the Go
# source and the workspace-configs-templates directory that lives beside it.
# CI workflow sets `context: .` and `file: ./platform/Dockerfile`.
FROM golang:1.25-alpine AS builder
WORKDIR /app
COPY platform/go.mod platform/go.sum ./
RUN go mod download
COPY platform/ .
RUN CGO_ENABLED=0 GOOS=linux go build -o /platform ./cmd/server
FROM alpine:3.20
# git is required by the `github` SourceResolver for plugin installs from
# GitHub URLs (POST /workspaces/:id/plugins {"source": "github://..."}).
RUN apk add --no-cache ca-certificates git tzdata
COPY --from=builder /platform /platform
COPY platform/migrations /migrations
# Default templates baked into the image so tenants boot with a working
# template picker. Phase B adds a registry + on-demand fetch for
# community templates; these curated defaults always ship in the image.
COPY workspace-configs-templates /workspace-configs-templates
EXPOSE 8080
CMD ["/platform"]