@@ -15,17 +15,32 @@ k3s-image := 'docker.io/rancher/k3s'
1515dry_run := ' false'
1616docker_arch := ' '
1717
18+ # Detect docker_bin if not specified: try docker first, then podman
19+ docker_bin := shell (' which docker 2> /dev/null || which podman 2> /dev/null || (echo >&2 "$1error$2: neither docker nor podman found" && exit 1)' , style (' error' ), NORMAL )
20+ # Extract basename of docker_bin to identify implementation
21+ _docker_bin_name := file_name (docker_bin)
22+ # Auto-detect if podman is in remote mode (unless explicitly overridden)
23+ podman_remote := if _docker_bin_name == ' podman' {
24+ shell (' if $1 info 2>/dev/null | grep -q "remoteSocket"; then echo "true"; else echo "false"; fi' , docker_bin)
25+ } else {
26+ ' false'
27+ }
28+
1829targets := ' go rust rust-musl tools devcontainer'
1930
2031load := ' false'
2132push := ' false'
22- output := if push == ' true' {
23- ' type=registry'
24- } else if load == ' true' {
25- ' type=docker'
26- } else {
27- ' type=image'
28- }
33+
34+ # Remote mode cannot use the --output flag
35+ output := if podman_remote == ' true' {
36+ ' '
37+ } else if push == ' true' {
38+ ' --output=type=registry'
39+ } else if load == ' true' {
40+ ' --output=type=docker'
41+ } else {
42+ ' --output=type=image'
43+ }
2944
3045export DOCKER_PROGRESS := env_var_or_default (' DOCKER_PROGRESS' , ' auto' )
3146
@@ -40,6 +55,8 @@ build *args='': && _list-if-load
4055 version=' {{ _version }} ' \
4156 docker_arch=' {{ docker_arch }} ' \
4257 dry_run=' {{ dry_run }} ' \
58+ docker_bin=' {{ docker_bin }} ' \
59+ podman_remote=' {{ podman_remote }} ' \
4360 _target " $tgt" \
4461 {{ args }}
4562 done
6380 fi
6481 for tgt in {{ targets }} ; do
6582 if [ " $tgt" == " devcontainer" ]; then
66- cmd=" docker image ls {{ image }} :{{ _version }} | sed 1d"
83+ cmd=" {{ docker_bin }} image ls {{ image }} :{{ _version }} | sed 1d"
6784 else
68- cmd=" docker image ls {{ image }} :{{ _version }} -$tgt | sed 1d"
85+ cmd=" {{ docker_bin }} image ls {{ image }} :{{ _version }} -$tgt | sed 1d"
6986 fi
7087
7188 echo " {{ style (' error' ) }} $cmd{{ NORMAL }} "
@@ -124,6 +141,8 @@ _target target='' *args='':
124141 version=' {{ _version }} ' \
125142 docker_arch=' {{ docker_arch }} ' \
126143 dry_run=' {{ dry_run }} ' \
144+ docker_bin=' {{ docker_bin }} ' \
145+ podman_remote=' {{ podman_remote }} ' \
127146 _build --target=' {{ target }} ' \
128147 {{ if _version == ' ' { ' ' } else { ' --tag=' + image + ' :' + _version + if target == ' devcontainer' { ' ' } else { ' -' + target } } }} \
129148 {{ args }}
@@ -133,9 +152,9 @@ _build *args='':
133152 #!/usr/bin/env bash
134153 set -euo pipefail
135154
136- cmd=" docker buildx build . {{ _tag }} --pull \
155+ cmd=" {{ docker_bin }} buildx build . {{ _tag }} --pull \
137156 --progress='{{ DOCKER_PROGRESS }} ' \
138- --output=' {{ output }} ' \
157+ {{ output }} \
139158 {{ if docker_arch != ' ' { ' --platform=' + docker_arch } else { ' ' } }} \
140159 {{ args }} "
141160
0 commit comments