Templates
Pre-configured LinuxKit templates for common deployment scenarios.
Available Templates
| Template | Description | Platforms |
|---|---|---|
core-dev | Full development environment with 100+ tools | linux/amd64, linux/arm64 |
server-php | FrankenPHP production server | linux/amd64, linux/arm64 |
edge-node | Minimal edge deployment | linux/amd64, linux/arm64 |
Using Templates
List Templates
bash
core vm templates listOutput:
Available Templates:
core-dev
Full development environment with 100+ tools
Platforms: linux/amd64, linux/arm64
server-php
FrankenPHP production server
Platforms: linux/amd64, linux/arm64
edge-node
Minimal edge deployment
Platforms: linux/amd64, linux/arm64Show Template Details
bash
core vm templates show server-phpOutput:
Template: server-php
Description: FrankenPHP production server
Platforms:
- linux/amd64
- linux/arm64
Formats:
- iso
- qcow2
Services:
- sshd
- frankenphp
- php-fpm
Size: ~800MBShow Template Variables
bash
core vm templates vars server-phpOutput:
Variables for server-php:
SSH_KEY (required) SSH public key
DOMAIN (optional) Server domain name
MEMORY (optional) Memory in MB (default: 2048)
CPUS (optional) CPU count (default: 2)Run Template
bash
# With required variables
core vm run --template server-php --var SSH_KEY="$(cat ~/.ssh/id_rsa.pub)"
# With all variables
core vm run --template server-php \
--var SSH_KEY="$(cat ~/.ssh/id_rsa.pub)" \
--var DOMAIN=example.com \
--var MEMORY=4096Template Locations
Templates are searched in order:
.core/linuxkit/- Project-specific templates~/.core/templates/- User templates- Built-in templates
Creating Templates
Create a LinuxKit YAML file in .core/linuxkit/:
Development Template
.core/linuxkit/dev.yml:
yaml
kernel:
image: linuxkit/kernel:5.15
cmdline: "console=tty0"
init:
- linuxkit/init:v0.8
- linuxkit/runc:v0.8
- linuxkit/containerd:v0.8
onboot:
- name: sysctl
image: linuxkit/sysctl:v0.8
- name: dhcpcd
image: linuxkit/dhcpcd:v0.8
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf"]
services:
- name: sshd
image: linuxkit/sshd:v0.8
- name: docker
image: docker:dind
capabilities:
- all
binds:
- /var/run:/var/run
files:
- path: /etc/ssh/authorized_keys
contents: |
{{ .SSH_KEY }}Production Template
.core/linuxkit/prod.yml:
yaml
kernel:
image: linuxkit/kernel:5.15
cmdline: "console=tty0 quiet"
init:
- linuxkit/init:v0.8
- linuxkit/runc:v0.8
onboot:
- name: sysctl
image: linuxkit/sysctl:v0.8
binds:
- /etc/sysctl.d:/etc/sysctl.d
- name: dhcpcd
image: linuxkit/dhcpcd:v0.8
command: ["/sbin/dhcpcd", "--nobackground", "-f", "/dhcpcd.conf"]
services:
- name: sshd
image: linuxkit/sshd:v0.8
- name: app
image: myapp:{{ .VERSION }}
capabilities:
- CAP_NET_BIND_SERVICE
binds:
- /var/data:/data
files:
- path: /etc/ssh/authorized_keys
contents: |
{{ .SSH_KEY }}
- path: /etc/myapp/config.yaml
contents: |
server:
port: 443
domain: {{ .DOMAIN }}
database:
path: /data/app.dbRun with:
bash
core vm run --template prod \
--var SSH_KEY="$(cat ~/.ssh/id_rsa.pub)" \
--var VERSION=1.2.3 \
--var DOMAIN=example.comTemplate Variables
Variables use Go template syntax with double braces:
yaml
# Required variable
contents: |
{{ .SSH_KEY }}
# With default value
contents: |
port: {{ .PORT | default "8080" }}
# Conditional
{{ if .DEBUG }}
debug: true
{{ end }}See Also
- LinuxKit VMs - Running and managing VMs
- Build Command - Building LinuxKit images
- VM Command - Full VM CLI reference