Skip to content

oci_load drops empty strings in cmd list #867

Open

Description

@garrettjohnston

The oci_load rule seems to drop empty strings from the cmd list. This doesn't happen with rules_docker container_image rule.

The empty string behavior is useful for Java libraries like JCommander that help parse command line args.

To reproduce

WORKSPACE

oci_pull(
    name = "distroless_java21",
    digest = "sha256:ed5be62a70c5b99708b4ad0fc53bda628d11e46e917f66720fd218cae8fe1568",
    image = "gcr.io/distroless/java21-debian12",
)

BUILD

load("@rules_oci//oci:defs.bzl", "oci_image", "oci_load")

oci_image(
    name = "test_image",
    base = "@distroless_java21",
    cmd = [
        "hello",
        "",
        "goodbye",
        "",
    ],
)

oci_load(
    name = "test_image_load",
    image = ":test_image",
    repo_tags = [
        "test_image:latest",
    ],
)
$ bazel run :test_image_load
$ docker inspect test_image:latest
...
 "Config": {
            "Cmd": [
                "hello",
                "goodbye"
            ],
            "Entrypoint": [
                "/usr/bin/java",
                "-jar"
            ],
...

Notice the empty strings are missing in the CMD list.

  • rules_oci v2.2.6
  • Bazel version 6.5.0
  • Docker version 28.4.0, build d8eb465

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions