Skip to content

build(docker): switch runtime images from debian to wolfi-base - #1020

Open
feliperalmeida wants to merge 1 commit into
mainfrom
felipe/use-wolfi-images
Open

build(docker): switch runtime images from debian to wolfi-base#1020
feliperalmeida wants to merge 1 commit into
mainfrom
felipe/use-wolfi-images

Conversation

@feliperalmeida

@feliperalmeida feliperalmeida commented Jul 30, 2026

Copy link
Copy Markdown

Switches the runtime stage of all three images (Dockerfile, Dockerfile.controlplane, Dockerfile.worker) from debian:bookworm-slim to chainguard/wolfi-base. Builder stages are unchanged.

  • PG-18 client without the PGDG bootstrap: Wolfi carries postgresql-18-client natively, so the wget/gnupg/apt-repo dance for the reshard runner's pg_dump/pg_restore is gone (pin to PG 18 preserved).
  • libstdc++ added explicitly where the CGO-linked DuckDB engine needs it (Dockerfile, Dockerfile.worker) — debian-slim shipped it implicitly, wolfi-base doesn't. Deliberately omitted from the CP image, which doesn't link libduckdb.
  • Non-root duckgres user now created via busybox addgroup/adduser.
  • Image sizes: all-in-one 660→535MB, CP 292MB, worker 497MB.

Verified locally: all-in-one serves psql over TLS with DDL/DML + JSON-extension queries; worker pre-warms DuckDB and loads the bundled ducklake extension; CP binary runs with pg_dump 18.4 present; all run as non-root on Wolfi.

🤖 Generated with Claude Code

@github-actions

Copy link
Copy Markdown

Test Impact Plan

Deterministic summary of how this PR changes tests, CI runners, and coverage-risk signals.

Summary

Area Added Changed Deleted
Test files 0 0 0
E2E/journey files 0 0 0
Workflow files 0 0 0

Signals

  • Test cases: +0 / -0
  • Assertions: +0 / -0
  • Skips or known failures added: 0
  • Workflow continue-on-error added: 0
  • Workflow path filters added: 0
  • Test commands removed from justfile: 0
  • E2E/journey retry lines added: 0

Coverage risk: neutral or increased

No coverage-reduction warnings detected.

@feliperalmeida
feliperalmeida marked this pull request as ready for review July 30, 2026 18:56
@feliperalmeida
feliperalmeida requested review from a team and Piccirello July 30, 2026 18:57

@Piccirello Piccirello left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Security side LGTM but defer to MW for signoff

Comment thread Dockerfile.controlplane
./cmd/duckgres-controlplane

FROM debian:bookworm-slim
FROM chainguard/wolfi-base:latest

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there any risk in moving from a specific version of debian to unpinned wolfi version?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought about that for a bit, and ended up concluding that wolfi-base is such a small image (basically OS + glibc + apk + bash) that seemed ok to use latest - they provide sha tags for reproducible builds if that's something we'd look for, but I don't think that should be needed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants