A self-hosted orchestration system crafted for power users. composia.xyz
Something went wrong. Try again.
composia Dockerfile
2.9 kB · 88 lines
Dockerfile
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889# syntax=docker/dockerfile:1.25@sha256:0adf442eae370b6087e08edc7c50b552d80ddf261576f4ebd6421006b2461f12FROM --platform=$BUILDPLATFORM golang:1.26@sha256:d52df9c279840adf958d017ebb275651ed8338b953d39817bc3633a2e6b1bbcc AS backend-builder-base
ARG TARGETOSARG TARGETARCHARG TARGETVARIANT
WORKDIR /src
COPY go.mod go.sum ./RUN --mount=type=cache,target=/go/pkg/mod \ go mod download
COPY . .
FROM backend-builder-base AS cli-builderARG TARGETOSARG TARGETARCHARG TARGETVARIANT
RUN --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build \ CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} GOARM=${TARGETVARIANT#v} \ go build -trimpath -ldflags="-s -w" -o /out/composia ./cmd/composia
FROM backend-builder-base AS controller-builderARG TARGETOSARG TARGETARCHARG TARGETVARIANT
RUN --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build \ CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} GOARM=${TARGETVARIANT#v} \ go build -trimpath -ldflags="-s -w" -o /out/composia-controller ./cmd/composia-controller
FROM backend-builder-base AS agent-builderARG TARGETOSARG TARGETARCHARG TARGETVARIANT
RUN --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build \ CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} GOARM=${TARGETVARIANT#v} \ go build -trimpath -ldflags="-s -w" -o /out/composia-agent ./cmd/composia-agent
FROM golang:1.26-alpine@sha256:0178a641fbb4858c5f1b48e34bdaabe0350a330a1b1149aabd498d0699ff5fb2 AS dev
WORKDIR /workspace
ENV PATH="/go/bin:${PATH}"
RUN apk add --no-cache ca-certificates docker-cli docker-cli-buildx docker-cli-compose git && \ go install github.com/air-verse/air@v1.65.3
CMD ["air", "-v"]
FROM alpine:3.24@sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b AS cli
WORKDIR /app
RUN apk add --no-cache ca-certificatesCOPY --from=cli-builder /out/composia /usr/local/bin/composia
USER 65532:65532ENTRYPOINT ["/usr/local/bin/composia"]CMD ["--help"]
FROM alpine:3.24@sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b AS controller
WORKDIR /app
RUN apk add --no-cache ca-certificates git tiniCOPY --from=controller-builder /out/composia-controller /usr/local/bin/composia-controller
USER 65532:65532ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/composia-controller"]CMD ["-config", "/app/config.yaml"]
FROM alpine:3.24@sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b AS agent
WORKDIR /app
RUN apk add --no-cache ca-certificates docker-cli docker-cli-buildx docker-cli-compose git tiniCOPY --from=agent-builder /out/composia-agent /usr/local/bin/composia-agent
USER 65532:65532ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/composia-agent"]CMD ["-config", "/app/config.yaml"]