chore: add oci-build/Dockerfile + .dockerignore for CI image build #6

Merged
David merged 1 commit from chore/oci-build-dockerfile into main 2026-05-07 01:06:05 +02:00
Owner

The build-oci-image.yml workflow invokes --file oci-build/Dockerfile but the file did not exist; only the dev cargo-watch Dockerfile lived at the repo root, so CI failed with failed to read dockerfile: open Dockerfile: no such file or directory (the dockerfile arg defaulted to the missing root path resolution because oci-build/Dockerfile was absent).

Adds a multi-stage prod image: rust:1.93.1-alpine builder with musl-dev + perl + make + linux-headers (rusqlite bundled and ring need them), then alpine:3.22 runtime with ca-certificates and tini. Builds the meshcentral server and the meshctrl admin CLI, runs as the non-root vervain user, exposes the production HTTPS port 15443, and mounts /data so meshcentral-data + meshcentral-files survive container restarts.

Adds .dockerignore to keep the build context lean: excludes target/, .git/, .idea/, .claude/, .forgejo/, dev-only Dockerfile/compose.dev.yml/justfile, docs, and the meshcentral runtime data dirs.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

The build-oci-image.yml workflow invokes `--file oci-build/Dockerfile` but the file did not exist; only the dev cargo-watch Dockerfile lived at the repo root, so CI failed with `failed to read dockerfile: open Dockerfile: no such file or directory` (the dockerfile arg defaulted to the missing root path resolution because oci-build/Dockerfile was absent). Adds a multi-stage prod image: rust:1.93.1-alpine builder with musl-dev + perl + make + linux-headers (rusqlite bundled and ring need them), then alpine:3.22 runtime with ca-certificates and tini. Builds the meshcentral server and the meshctrl admin CLI, runs as the non-root vervain user, exposes the production HTTPS port 15443, and mounts /data so meshcentral-data + meshcentral-files survive container restarts. Adds .dockerignore to keep the build context lean: excludes target/, .git/, .idea/, .claude/, .forgejo/, dev-only Dockerfile/compose.dev.yml/justfile, docs, and the meshcentral runtime data dirs. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
chore: add oci-build/Dockerfile + .dockerignore for CI image build
All checks were successful
Create release / Create release from merged PR (pull_request) Has been skipped
290360212e
The build-oci-image.yml workflow invokes `--file oci-build/Dockerfile` but the file did not exist; only the dev cargo-watch Dockerfile lived at the repo root, so CI failed with `failed to read dockerfile: open Dockerfile: no such file or directory` (the dockerfile arg defaulted to the missing root path resolution because oci-build/Dockerfile was absent).

Adds a multi-stage prod image: rust:1.93.1-alpine builder with musl-dev + perl + make + linux-headers (rusqlite bundled and ring need them), then alpine:3.22 runtime with ca-certificates and tini. Builds the meshcentral server and the meshctrl admin CLI, runs as the non-root vervain user, exposes the production HTTPS port 15443, and mounts /data so meshcentral-data + meshcentral-files survive container restarts.

Adds .dockerignore to keep the build context lean: excludes target/, .git/, .idea/, .claude/, .forgejo/, dev-only Dockerfile/compose.dev.yml/justfile, docs, and the meshcentral runtime data dirs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
David merged commit f2565092d8 into main 2026-05-07 01:06:05 +02:00
David deleted branch chore/oci-build-dockerfile 2026-05-07 01:06:05 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/vervain-server!6
No description provided.