Skip to content

minikube image build should support configuring build-args #12384

Open
@briandealwis

Description

@briandealwis

Steps to reproduce the issue:

I'm unable to use minikube image build with a Dockerfile requiring build-args, using the docker runtime. I was unable to concoct a --build-opt value that would result in a correct docker build --build-arg key=value command line.

Minikube's underlying implementation takes the --build-opt arguments, prefixes them with -- and then appends the result as a single argument:

for _, opt := range opts {
args = append(args, "--"+opt)
}

The other container runtimes do something similar.

Docker's command-line parser requires that the --build-arg key-value pairs are provided as a separate argument. It doesn't seem to support specifying build-args using a single-argument style like --build-arg=key=value.

$ minikube --alsologtostderr image build --build-opt=build-arg=BUILDPLATFORM=linux  .
[...]
I0901 09:40:27.239205   86641 build_images.go:137] Building image from path: /var/folders/mx/_6wvyq4n3psb4nj95d8ycpv80000gn/T/build.157572332.tar
I0901 09:40:27.240484   86641 ssh_runner.go:149] Run: sudo mkdir -p /var/lib/minikube/build
I0901 09:40:27.245954   86641 ssh_runner.go:316] scp /var/folders/mx/_6wvyq4n3psb4nj95d8ycpv80000gn/T/build.157572332.tar --> /var/lib/minikube/build/build.157572332.tar (2048 bytes)
I0901 09:40:27.259538   86641 ssh_runner.go:149] Run: sudo mkdir -p /var/lib/minikube/build/build.157572332
I0901 09:40:27.264557   86641 ssh_runner.go:149] Run: sudo tar -C /var/lib/minikube/build/build.157572332 -xf /var/lib/minikube/build/build.157572332.tar
I0901 09:40:27.269088   86641 docker.go:249] Building image: /var/lib/minikube/build/build.157572332
I0901 09:40:27.269162   86641 ssh_runner.go:149] Run: docker build /var/lib/minikube/build/build.157572332 --build-arg=BUILDPLATFORM=linux
unknown flag: --build-arg=BUILDPLATFORM
See 'docker build --help'.
[...]

It seems worth adding an additional --build-arg flag for minikube image build:

  • for the docker runtimes and crio (pod man) runtimes, it would add each entry with a prior --build-arg
  • for containerd (buildkit), it would prefix each entry with `--opt' 'build-arg:'

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/imageIssues/PRs related to the minikube image subcommandkind/featureCategorizes issue or PR as related to a new feature.lifecycle/frozenIndicates that an issue or PR should not be auto-closed due to staleness.priority/backlogHigher priority than priority/awaiting-more-evidence.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions