Skip to content
⭐ If you like Dalec, please give it a star on GitHub!
Virtual Packages

Virtual Packages

Virtual packages are packages that don’t install files themselves but reference other packages as dependencies. They’re useful for creating meta-packages that group related dependencies together.

Basic Virtual Package

Here’s a simple virtual package that installs two dependencies:

# syntax=ghcr.io/project-dalec/dalec/frontend:latest
name: my-package
version: 1.0.0
revision: "1"
packager: Contoso
vendor: Contoso
license: MIT
description: A virtual package that installs related dependencies
website: http://contoso.com

dependencies:
  runtime:
    my-package-foo:
    my-package-bar:

Build the package:

docker build -t my-package-image:1.0.0 --target=azlinux3 -f my-package.yml .

This creates a scratch container with only the virtual package and its dependencies installed.

You can also pass the spec via stdin: docker build -t my-package-image:1.0.0 -< my-package.yml

Customizing the Base Image

Use a different base image instead of scratch:

# syntax=ghcr.io/project-dalec/dalec/frontend:latest
name: my-package
version: 1.0.0
revision: "1"
packager: Contoso
vendor: Contoso
license: MIT
description: A virtual package with a custom base image
website: http://contoso.com

dependencies:
  runtime:
    my-package-foo:
    my-package-bar:

targets:
  azlinux3:
    image:
      base: mcr.microsoft.com/azurelinux/base/core:3.0

Image Configuration

Set image properties like entrypoint, environment variables, and working directory:

# syntax=ghcr.io/project-dalec/dalec/frontend:latest
name: my-package
version: 1.0.0
revision: "1"
packager: Contoso
vendor: Contoso
license: MIT
description: A virtual package with custom image settings
website: http://contoso.com

dependencies:
  runtime:
    my-package-foo:
    my-package-bar:

image:
  entrypoint: /bin/sh
  cmd: ["-c"]

Target-Specific Configuration

Override image settings for specific targets:

targets:
  azlinux3:
    image:
      entrypoint: /bin/bash
      base: mcr.microsoft.com/azurelinux/base/core:3.0

This allows different configurations per build target while maintaining common defaults.