From 145f78b8b86d97b710ea9bef9131ef13c2b70534 Mon Sep 17 00:00:00 2001 From: Owen Jacobson Date: Tue, 12 Mar 2024 21:18:07 -0400 Subject: Build Caddy in a Docker image. --- .envrc | 3 +++ .gitignore | 1 + Dockerfile.builder | 27 +++++++++++++++++++++++++++ bookworm-backports.list | 1 + tools/build-builder | 12 ++++++++++++ tools/build-caddy | 17 +++++++++++++++++ 6 files changed, 61 insertions(+) create mode 100644 .envrc create mode 100644 .gitignore create mode 100644 Dockerfile.builder create mode 100644 bookworm-backports.list create mode 100755 tools/build-builder create mode 100755 tools/build-caddy diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..0b76d9e --- /dev/null +++ b/.envrc @@ -0,0 +1,3 @@ +PATH_add tools + +source_env_if_exists .envrc.local diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b83d222 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/Dockerfile.builder b/Dockerfile.builder new file mode 100644 index 0000000..dbb1026 --- /dev/null +++ b/Dockerfile.builder @@ -0,0 +1,27 @@ +FROM debian:bookworm-slim + +RUN apt-get update \ + && apt install -y \ + debian-keyring \ + debian-archive-keyring \ + apt-transport-https \ + ca-certificates \ + && true + +COPY bookworm-backports.list /etc/apt/sources.list.d/bookworm-backports.list +ADD https://dl.cloudsmith.io/public/caddy/xcaddy/debian.deb.txt /etc/apt/sources.list.d/caddy.list +ADD https://dl.cloudsmith.io/public/caddy/xcaddy/gpg.key /opt/caddy/gpg.key +RUN gpg \ + --dearmor \ + -o /usr/share/keyrings/caddy-xcaddy-archive-keyring.gpg \ + /opt/caddy/gpg.key + +RUN apt-get update \ + && apt-get install -y \ + -t bookworm-backports \ + golang-go \ + xcaddy \ + && true + +RUN mkdir /app +WORKDIR /app diff --git a/bookworm-backports.list b/bookworm-backports.list new file mode 100644 index 0000000..1455dda --- /dev/null +++ b/bookworm-backports.list @@ -0,0 +1 @@ +deb http://deb.debian.org/debian bookworm-backports main diff --git a/tools/build-builder b/tools/build-builder new file mode 100755 index 0000000..6a48cd1 --- /dev/null +++ b/tools/build-builder @@ -0,0 +1,12 @@ +#!/bin/bash -e + +## tools/build-builder +## +## Builds a Docker image that can build Caddy binaries for Debian. + +cd "$(dirname "$0")/.." + +docker build \ + --tag caddy-builder:latest \ + --file Dockerfile.builder \ + . diff --git a/tools/build-caddy b/tools/build-caddy new file mode 100755 index 0000000..f20dccc --- /dev/null +++ b/tools/build-caddy @@ -0,0 +1,17 @@ +#!/bin/bash -e + +## tools/build-caddy +## +## Builds Caddy from source. + +cd "$(dirname "$0")/.." + +[ -d target ] || mkdir target + +docker run \ + --rm \ + --interactive \ + --tty \ + --volume "$PWD/target:/app" \ + caddy-builder:latest \ + xcaddy build -- cgit v1.2.3