diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..d7f9c2f48097eaedf72f55a210b631b5bf430e2c
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,4 @@
+include:
+  - "https://git.autistici.org/pipelines/containers/raw/master/common.yml"
+  - "https://git.autistici.org/pipelines/images/test/golang/raw/master/ci.yml"
+
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..302bbd3b8cb4d3c8537d5cc6e1edf2d648ed1e33
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,11 @@
+# Don't build a static binary, the duckdb libraries need NSS for name
+# resolution and such anyway.
+FROM golang:1.21 AS build
+ADD . /src
+WORKDIR /src
+RUN go build -trimpath -o /pqlogd ./cmd/pqlogd
+
+FROM registry.git.autistici.org/pipelines/images/base/debian:bookworm
+COPY --from=build /pqlogd /usr/bin/pqlogd
+
+ENTRYPOINT ["/usr/bin/pqlogd"]