aboutsummaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
authorXe Iaso <me@xeiaso.net>2025-04-20 22:09:18 -0400
committerXe Iaso <me@xeiaso.net>2025-04-20 22:09:18 -0400
commitd913956e760d076ff7f72622871f3fd59d8a3a8e (patch)
tree053ce24e99e4ab1725f0c2e91718649030e605dc /docker
parent30aaeb2598504912dc99445dfd1c1bd84efa676e (diff)
downloadxesite-d913956e760d076ff7f72622871f3fd59d8a3a8e.tar.xz
xesite-d913956e760d076ff7f72622871f3fd59d8a3a8e.zip
docker buildx bake
Signed-off-by: Xe Iaso <me@xeiaso.net>
Diffstat (limited to 'docker')
-rw-r--r--docker/patreon-saasproxy.Dockerfile23
-rw-r--r--docker/xesite.Dockerfile44
2 files changed, 67 insertions, 0 deletions
diff --git a/docker/patreon-saasproxy.Dockerfile b/docker/patreon-saasproxy.Dockerfile
new file mode 100644
index 0000000..f9fed4e
--- /dev/null
+++ b/docker/patreon-saasproxy.Dockerfile
@@ -0,0 +1,23 @@
+ARG GO_VERSION=1.24
+ARG ALPINE_VERSION=edge
+FROM --platform=${BUILDPLATFORM} golang:${GO_VERSION}-alpine AS build
+
+ARG TARGETOS
+ARG TARGETARCH
+
+WORKDIR /app
+
+COPY go.mod go.sum ./
+RUN go mod download
+
+COPY . .
+RUN --mount=type=cache,target=/root/.cache GOOS=${TARGETOS} GOARCH=${TARGETARCH} CGO_ENABLED=0 go build -gcflags "all=-N -l" -o /app/bin/patreon-saasproxy ./cmd/patreon-saasproxy
+
+FROM alpine:${ALPINE_VERSION} AS run
+WORKDIR /app
+
+COPY --from=build /app/bin/patreon-saasproxy /app/bin/patreon-saasproxy
+
+CMD ["/app/bin/patreon-saasproxy"]
+
+LABEL org.opencontainers.image.source="https://github.com/Xe/site"
diff --git a/docker/xesite.Dockerfile b/docker/xesite.Dockerfile
new file mode 100644
index 0000000..8236751
--- /dev/null
+++ b/docker/xesite.Dockerfile
@@ -0,0 +1,44 @@
+ARG GO_VERSION=1.24
+ARG ALPINE_VERSION=edge
+FROM --platform=${BUILDPLATFORM} golang:${GO_VERSION}-alpine AS build
+
+ARG TARGETOS
+ARG TARGETARCH
+
+WORKDIR /app
+
+COPY go.mod go.sum ./
+RUN go mod download
+
+COPY . .
+RUN --mount=type=cache,target=/root/.cache GOOS=${TARGETOS} GOARCH=${TARGETARCH} CGO_ENABLED=0 go build -gcflags "all=-N -l" -o /app/bin/xesite ./cmd/xesite
+
+FROM --platform=${BUILDPLATFORM} alpine:${ALPINE_VERSION} AS fonts
+
+WORKDIR /fonts
+RUN apk add -U unzip ca-certificates curl \
+ && curl -Lo iosevka.zip https://cdn.xeiaso.net/static/pkg/iosevka/ttf.zip \
+ && unzip -d /fonts iosevka.zip
+
+FROM --platform=${BUILDPLATFORM} alpine:${ALPINE_VERSION} AS dhall-json
+
+RUN mkdir -p /app
+WORKDIR /app
+RUN apk add -U curl bzip2 ca-certificates \
+ && curl -L -o dhall-linux.tar.bz2 https://github.com/dhall-lang/dhall-haskell/releases/download/1.42.0/dhall-json-1.7.12-x86_64-linux.tar.bz2 \
+ && tar -xvjf dhall-linux.tar.bz2 \
+ && mv bin/dhall-to-json .
+
+FROM alpine:${ALPINE_VERSION} AS run
+WORKDIR /app
+
+RUN apk add -U ca-certificates deno typst mailcap
+ENV TYPST_FONT_PATHS=/app/fonts
+
+COPY --from=build /app/bin/xesite /app/bin/xesite
+COPY --from=fonts /fonts /app/fonts
+COPY --from=dhall-json /app/dhall-to-json /usr/local/bin/dhall-to-json
+
+CMD ["/app/bin/xesite"]
+
+LABEL org.opencontainers.image.source="https://github.com/Xe/site"