images/linuxkit
Snider 91f8aac50f feat: add LinuxKit image builds using core CLI
Add LinuxKit configurations for developer and server-php images:
- developer/linuxkit.yml: Full dev environment with Docker-in-LinuxKit
- server-php/linuxkit.yml: Nginx + PHP-FPM production server

Update CI workflow to build LinuxKit images using `core build --type linuxkit`
instead of raw linuxkit CLI commands for consistency across the ecosystem.

Builds produce qcow2 and ISO formats for both amd64 and arm64 architectures.
Release artifacts are uploaded to GitHub Releases on version tags.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 22:23:22 +00:00
..
README.md feat: add LinuxKit image builds using core CLI 2026-01-28 22:23:22 +00:00

LinuxKit Images

This directory contains documentation for LinuxKit image builds.

Building with Core CLI

The recommended way to build LinuxKit images is using the core CLI:

# Install core CLI
go install github.com/host-uk/core/cmd/core@latest

# Build developer image (QCOW2 for QEMU/KVM)
core build --type linuxkit --config developer/linuxkit.yml --format qcow2-bios

# Build server-php image (QCOW2 for QEMU/KVM)
core build --type linuxkit --config server-php/linuxkit.yml --format qcow2-bios

# Build ISO for bare metal / other hypervisors
core build --type linuxkit --config developer/linuxkit.yml --format iso-bios
core build --type linuxkit --config server-php/linuxkit.yml --format iso-bios

# Build for specific architecture
core build --type linuxkit --config developer/linuxkit.yml --arch arm64

Running Images

# Run with core CLI
core run core-dev-amd64.qcow2

# Run with custom resources
core run core-dev-amd64.qcow2 --memory 4096 --cpus 4

# Run in detached mode
core run -d core-dev-amd64.qcow2

Output Formats

Format Use Case
qcow2-bios QEMU/KVM (default)
iso-bios Bare metal, VMware, VirtualBox
raw-bios Direct disk write
vhd Hyper-V
vmdk VMware
aws AWS EC2 AMI
gcp Google Cloud
azure Microsoft Azure

Image Architecture

Developer Image

The developer LinuxKit image provides:

  • Full developer toolchain (Node, Go, PHP, Python)
  • Docker-in-LinuxKit for container workflows
  • SSH access for remote development
  • Persistent /workspace volume
  • Pre-configured shell with aliases and starship prompt

Server PHP Image

The server PHP LinuxKit image provides:

  • Minimal Alpine base
  • Nginx + PHP-FPM stack
  • SSH access for management
  • Health check endpoint at /health
  • Persistent /var/www/html volume

Customization

Adding SSH Keys

Edit the authorized_keys file in the linuxkit.yml:

files:
  - path: /etc/ssh/authorized_keys
    contents: |
      ssh-ed25519 AAAA... your-key@host
    mode: "0600"

Environment Variables

Add environment variables to the service definition:

services:
  - name: developer
    env:
      - MY_VAR=value

Custom Packages

For additional packages, create a custom container image that inherits from the base and add it to the LinuxKit config.