package docker
import (
"dagger.io/dagger"
"universe.dagger.io/docker"
"universe.dagger.io/alpine"
)
dagger.#Plan & {
actions: test: run: {
_build: alpine.#Build & {
packages: bash: _
}
_image: _build.output
// Test: run a simple shell command
simpleShell: {
run: docker.#Run & {
input: _image
command: {
name: "/bin/sh"
args: ["-c", "echo -n hello world >> /output.txt"]
verify: dagger.#ReadFile & {
input: run.output.rootfs
path: "/output.txt"
verify: contents: "hello world"
// Test: export a file
exportFile: {
name: "sh"
flags: "-c": #"""
echo -n hello world >> /output.txt
"""#
export: files: "/output.txt": string & "hello world"
// Test: export a directory
exportDirectory: {
mkdir -p /test
echo -n hello world >> /test/output.txt
export: directories: "/test": _
input: run.export.directories."/test"
// Test: configs overriding image defaults
configs: {
_base: docker.#Set & {
config: {
user: "nobody"
workdir: "/sbin"
entrypoint: ["sh"]
cmd: ["-c", "echo -n $0 $PWD $(whoami) > /tmp/output.txt"]
// check defaults not overriden by image config
runDefaults: docker.#Run & {
flags: "-c": "echo -n $PWD $(whoami) > /output.txt"
export: files: "/output.txt": "/ root"
// check image defaults
imageDefaults: docker.#Run & {
input: _base.output
export: files: "/tmp/output.txt": "sh /sbin nobody"
// check overrides by user
overrides: docker.#Run & {
entrypoint: ["bash"]
workdir: "/root"
user: "root"
export: files: "/tmp/output.txt": "bash /root root"