images/linuxkit/README.md
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

102 lines
2.3 KiB
Markdown

# 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:
```bash
# 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
```bash
# 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:
```yaml
files:
- path: /etc/ssh/authorized_keys
contents: |
ssh-ed25519 AAAA... your-key@host
mode: "0600"
```
### Environment Variables
Add environment variables to the service definition:
```yaml
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.