Skip to content

cmd: Add optional json format to inspect command output#131

Open
detsch wants to merge 2 commits intomainfrom
detsch-add-inspect-json
Open

cmd: Add optional json format to inspect command output#131
detsch wants to merge 2 commits intomainfrom
detsch-add-inspect-json

Conversation

@detsch
Copy link
Copy Markdown
Member

@detsch detsch commented Apr 10, 2026

@mike-sul here is an example output. My priority was to get something out to unblock the new tests, I'm sure you will have suggestions for improvements in the json format. "indexes" is particularly not a good name IMO.

Also, we may want to move part of the new code to pkg/compose/app.go

{
  "name": "shellhttpd_base_10000",
  "ref": "hub.foundries.io/detsch-temp-test-1/shellhttpd_base_10000@sha256:643ec5ca445dcccba14f3ce704f6b7d4ad80756047dbcee4fd1ab938a10a5a41",
  "meta": {
    "type": "app meta",
    "digest": "sha256:d0f98c59b144cd1f769074d64d483fa267150a30043f63a5a4ebf8646493df67",
    "size": 294
  },
  "index": {
    "type": "app index",
    "digest": "sha256:247d5eb89ba605f426455a5238510d166595ab520bad3dfdcae5ae6219b2eeeb",
    "size": 757
  },
  "bundle": {
    "type": "app bundle",
    "digest": "sha256:66946ccde0f071bbbd49d5e5bf2d0c27a1a8500b683ab3800429255c15c26f3a",
    "size": 1039
  },
  "indexes": [
    {
      "index": {
        "type": "index",
        "digest": "sha256:98e4fcf4df5e67ec7dcb4efb83d4d5b3dc8ca85a1fc792d4a4806e92e26228c4",
        "size": 433
      },
      "manifest": {
        "type": "manifest",
        "digest": "sha256:bb28ee97ff89067d391e838cef15f80dd77659f4d5f23f2af15f48998428c0e8",
        "size": 696
      },
      "blobs": [
        {
          "type": "config",
          "digest": "sha256:312c4b1d9d21667e7483409396b8a8c3deb3236063471c92245fba4970141e6e",
          "size": 808
        },
        {
          "type": "layer",
          "digest": "sha256:f18232174bc91741fdf3da96d85011092101a032a93a388b79e99e69c2d5c870",
          "size": 3642247
        },
        {
          "type": "layer",
          "digest": "sha256:616b7f571c8ee24772b38ccfb5418fccee5bdf443af4f89b2f76e48cd9b3af09",
          "size": 387
        }
      ]
    },
    {
      "index": {
        "type": "index",
        "digest": "sha256:98e4fcf4df5e67ec7dcb4efb83d4d5b3dc8ca85a1fc792d4a4806e92e26228c4",
        "size": 433
      },
      "manifest": {
        "type": "manifest",
        "digest": "sha256:bb28ee97ff89067d391e838cef15f80dd77659f4d5f23f2af15f48998428c0e8",
        "size": 696
      },
      "blobs": [
        {
          "type": "config",
          "digest": "sha256:312c4b1d9d21667e7483409396b8a8c3deb3236063471c92245fba4970141e6e",
          "size": 808
        },
        {
          "type": "layer",
          "digest": "sha256:f18232174bc91741fdf3da96d85011092101a032a93a388b79e99e69c2d5c870",
          "size": 3642247
        },
        {
          "type": "layer",
          "digest": "sha256:616b7f571c8ee24772b38ccfb5418fccee5bdf443af4f89b2f76e48cd9b3af09",
          "size": 387
        }
      ]
    },
    {
      "index": {
        "type": "index",
        "digest": "sha256:98e4fcf4df5e67ec7dcb4efb83d4d5b3dc8ca85a1fc792d4a4806e92e26228c4",
        "size": 433
      },
      "manifest": {
        "type": "manifest",
        "digest": "sha256:bb28ee97ff89067d391e838cef15f80dd77659f4d5f23f2af15f48998428c0e8",
        "size": 696
      },
      "blobs": [
        {
          "type": "config",
          "digest": "sha256:312c4b1d9d21667e7483409396b8a8c3deb3236063471c92245fba4970141e6e",
          "size": 808
        },
        {
          "type": "layer",
          "digest": "sha256:f18232174bc91741fdf3da96d85011092101a032a93a388b79e99e69c2d5c870",
          "size": 3642247
        },
        {
          "type": "layer",
          "digest": "sha256:616b7f571c8ee24772b38ccfb5418fccee5bdf443af4f89b2f76e48cd9b3af09",
          "size": 387
        }
      ]
    },
    {
      "index": {
        "type": "index",
        "digest": "sha256:98e4fcf4df5e67ec7dcb4efb83d4d5b3dc8ca85a1fc792d4a4806e92e26228c4",
        "size": 433
      },
      "manifest": {
        "type": "manifest",
        "digest": "sha256:bb28ee97ff89067d391e838cef15f80dd77659f4d5f23f2af15f48998428c0e8",
        "size": 696
      },
      "blobs": [
        {
          "type": "config",
          "digest": "sha256:312c4b1d9d21667e7483409396b8a8c3deb3236063471c92245fba4970141e6e",
          "size": 808
        },
        {
          "type": "layer",
          "digest": "sha256:f18232174bc91741fdf3da96d85011092101a032a93a388b79e99e69c2d5c870",
          "size": 3642247
        },
        {
          "type": "layer",
          "digest": "sha256:616b7f571c8ee24772b38ccfb5418fccee5bdf443af4f89b2f76e48cd9b3af09",
          "size": 387
        }
      ]
    },
    {
      "index": {
        "type": "index",
        "digest": "sha256:98e4fcf4df5e67ec7dcb4efb83d4d5b3dc8ca85a1fc792d4a4806e92e26228c4",
        "size": 433
      },
      "manifest": {
        "type": "manifest",
        "digest": "sha256:bb28ee97ff89067d391e838cef15f80dd77659f4d5f23f2af15f48998428c0e8",
        "size": 696
      },
      "blobs": [
        {
          "type": "config",
          "digest": "sha256:312c4b1d9d21667e7483409396b8a8c3deb3236063471c92245fba4970141e6e",
          "size": 808
        },
        {
          "type": "layer",
          "digest": "sha256:f18232174bc91741fdf3da96d85011092101a032a93a388b79e99e69c2d5c870",
          "size": 3642247
        },
        {
          "type": "layer",
          "digest": "sha256:616b7f571c8ee24772b38ccfb5418fccee5bdf443af4f89b2f76e48cd9b3af09",
          "size": 387
        }
      ]
    }
  ]
}
` ``

@mike-sul
Copy link
Copy Markdown
Collaborator

@detsch
I would structure the resultant json according to the app structure, similarly as it is printed in the non-json output.

Specifically, the "bundle" field should contain an array of "services" (or "indexes") and each element of the array is either image index of manifest. If it is an image index then it should contains an array of image manifest.

image index ->
  - manifest (arm64)
    - config
    - layers ->
       - {layer info}
       - { layer info}
  - manifest (amd64)

@mike-sul
Copy link
Copy Markdown
Collaborator

"indexes" is particularly not a good name IMO.

I suggest to stick to the terms of the OCI image spec, https://github.com/opencontainers/image-spec/blob/main/image-index.md#oci-image-index-specification and the terms of the compose app spec https://github.com/compose-spec/compose-spec/blob/main/03-compose-file.md.

So, according to those specs, the app bundle consists of "services" at the top level. And then, each service refers to either an image index or manifest. If it is an image index, then it in turn consists of N image manifests.

@detsch detsch force-pushed the detsch-add-inspect-json branch from d38f08f to a17f2b4 Compare April 13, 2026 19:37
@detsch
Copy link
Copy Markdown
Member Author

detsch commented Apr 13, 2026

@mike-sul Updated format bellow. Maybe "type" field is now redundant, WDYT?

{
  "name": "shellhttpd_base_10000",
  "ref": "hub.foundries.io/detsch-temp-test-1/shellhttpd_base_10000@sha256:643ec5ca445dcccba14f3ce704f6b7d4ad80756047dbcee4fd1ab938a10a5a41",
  "meta": {
    "type": "app meta",
    "digest": "sha256:d0f98c59b144cd1f769074d64d483fa267150a30043f63a5a4ebf8646493df67",
    "size": 294
  },
  "index": {
    "type": "app index",
    "digest": "sha256:247d5eb89ba605f426455a5238510d166595ab520bad3dfdcae5ae6219b2eeeb",
    "size": 757
  },
  "bundle": {
    "type": "index",
    "digest": "sha256:98e4fcf4df5e67ec7dcb4efb83d4d5b3dc8ca85a1fc792d4a4806e92e26228c4",
    "size": 433,
    "services": [
      {
        "manifests": [
          {
            "type": "manifest",
            "digest": "sha256:bb28ee97ff89067d391e838cef15f80dd77659f4d5f23f2af15f48998428c0e8",
            "size": 696,
            "architecture": "amd64",
            "config": {
              "type": "config",
              "digest": "sha256:312c4b1d9d21667e7483409396b8a8c3deb3236063471c92245fba4970141e6e",
              "size": 808
            },
            "layers": [
              {
                "type": "layer",
                "digest": "sha256:f18232174bc91741fdf3da96d85011092101a032a93a388b79e99e69c2d5c870",
                "size": 3642247
              },
              {
                "type": "layer",
                "digest": "sha256:616b7f571c8ee24772b38ccfb5418fccee5bdf443af4f89b2f76e48cd9b3af09",
                "size": 387
              }
            ]
          }
        ]
      },
      {
        "manifests": [
          {
            "type": "manifest",
            "digest": "sha256:bb28ee97ff89067d391e838cef15f80dd77659f4d5f23f2af15f48998428c0e8",
            "size": 696,
            "architecture": "amd64",
            "config": {
              "type": "config",
              "digest": "sha256:312c4b1d9d21667e7483409396b8a8c3deb3236063471c92245fba4970141e6e",
              "size": 808
            },
            "layers": [
              {
                "type": "layer",
                "digest": "sha256:f18232174bc91741fdf3da96d85011092101a032a93a388b79e99e69c2d5c870",
                "size": 3642247
              },
              {
                "type": "layer",
                "digest": "sha256:616b7f571c8ee24772b38ccfb5418fccee5bdf443af4f89b2f76e48cd9b3af09",
                "size": 387
              }
            ]
          }
        ]
      },
      {
        "manifests": [
          {
            "type": "manifest",
            "digest": "sha256:bb28ee97ff89067d391e838cef15f80dd77659f4d5f23f2af15f48998428c0e8",
            "size": 696,
            "architecture": "amd64",
            "config": {
              "type": "config",
              "digest": "sha256:312c4b1d9d21667e7483409396b8a8c3deb3236063471c92245fba4970141e6e",
              "size": 808
            },
            "layers": [
              {
                "type": "layer",
                "digest": "sha256:f18232174bc91741fdf3da96d85011092101a032a93a388b79e99e69c2d5c870",
                "size": 3642247
              },
              {
                "type": "layer",
                "digest": "sha256:616b7f571c8ee24772b38ccfb5418fccee5bdf443af4f89b2f76e48cd9b3af09",
                "size": 387
              }
            ]
          }
        ]
      },
      {
        "manifests": [
          {
            "type": "manifest",
            "digest": "sha256:bb28ee97ff89067d391e838cef15f80dd77659f4d5f23f2af15f48998428c0e8",
            "size": 696,
            "architecture": "amd64",
            "config": {
              "type": "config",
              "digest": "sha256:312c4b1d9d21667e7483409396b8a8c3deb3236063471c92245fba4970141e6e",
              "size": 808
            },
            "layers": [
              {
                "type": "layer",
                "digest": "sha256:f18232174bc91741fdf3da96d85011092101a032a93a388b79e99e69c2d5c870",
                "size": 3642247
              },
              {
                "type": "layer",
                "digest": "sha256:616b7f571c8ee24772b38ccfb5418fccee5bdf443af4f89b2f76e48cd9b3af09",
                "size": 387
              }
            ]
          }
        ]
      },
      {
        "manifests": [
          {
            "type": "manifest",
            "digest": "sha256:bb28ee97ff89067d391e838cef15f80dd77659f4d5f23f2af15f48998428c0e8",
            "size": 696,
            "architecture": "amd64",
            "config": {
              "type": "config",
              "digest": "sha256:312c4b1d9d21667e7483409396b8a8c3deb3236063471c92245fba4970141e6e",
              "size": 808
            },
            "layers": [
              {
                "type": "layer",
                "digest": "sha256:f18232174bc91741fdf3da96d85011092101a032a93a388b79e99e69c2d5c870",
                "size": 3642247
              },
              {
                "type": "layer",
                "digest": "sha256:616b7f571c8ee24772b38ccfb5418fccee5bdf443af4f89b2f76e48cd9b3af09",
                "size": 387
              }
            ]
          }
        ]
      }
    ]
  }
}

@detsch detsch marked this pull request as ready for review April 13, 2026 20:01
@mike-sul
Copy link
Copy Markdown
Collaborator

Maybe "type" field is now redundant

Yes, the "type" field is redundant now since a filed name indicate the type.

@mike-sul
Copy link
Copy Markdown
Collaborator

mike-sul commented Apr 15, 2026

I would probably change the "bundle" format, specifically its "services" field to make it follow the compose app spec (each service contains an image field):

"services": [
   {
      "name": <service-name> // unless it is impossible or difficult to extract service name at that command.
      "image": {
          
          "ref": <uri>,
          "manifests": [
             {
                "digest": <>,
                "size": <>,
                "arch": <>,
                "config": <>
                "layers": [
                  {}
                ],
                
             },
             {}
          ]
      }
   },
   
   {
   },
   ...

]

It is really useful to know  a service image ref/URI as it can be hosted on different registry than the compose apps is hosted.

@detsch detsch force-pushed the detsch-add-inspect-json branch from a17f2b4 to 926e2a1 Compare April 15, 2026 18:18
@detsch
Copy link
Copy Markdown
Member Author

detsch commented Apr 15, 2026

@mike-sul updated format accordingly.

I'm getting the name from the service URL, is that what you expected?

{
  "name": "shellhttpd_base_10000",
  "ref": "hub.foundries.io/detsch-temp-test-1/shellhttpd_base_10000@sha256:643ec5ca445dcccba14f3ce704f6b7d4ad80756047dbcee4fd1ab938a10a5a41",
  "meta": {
    "digest": "sha256:d0f98c59b144cd1f769074d64d483fa267150a30043f63a5a4ebf8646493df67",
    "size": 294
  },
  "index": {
    "digest": "sha256:247d5eb89ba605f426455a5238510d166595ab520bad3dfdcae5ae6219b2eeeb",
    "size": 757
  },
  "bundle": {
    "digest": "sha256:98e4fcf4df5e67ec7dcb4efb83d4d5b3dc8ca85a1fc792d4a4806e92e26228c4",
    "size": 433,
    "services": [
      {
        "name": "shellhttpd_base_10000",
        "image": {
          "ref": "hub.foundries.io/detsch-temp-test-1/shellhttpd_base_10000@sha256:98e4fcf4df5e67ec7dcb4efb83d4d5b3dc8ca85a1fc792d4a4806e92e26228c4",
          "manifests": [
            {
              "digest": "sha256:bb28ee97ff89067d391e838cef15f80dd77659f4d5f23f2af15f48998428c0e8",
              "size": 696,
              "architecture": "amd64",
              "config": {
                "digest": "sha256:312c4b1d9d21667e7483409396b8a8c3deb3236063471c92245fba4970141e6e",
                "size": 808
              },
              "layers": [
                {
                  "digest": "sha256:f18232174bc91741fdf3da96d85011092101a032a93a388b79e99e69c2d5c870",
                  "size": 3642247
                },
                {
                  "digest": "sha256:616b7f571c8ee24772b38ccfb5418fccee5bdf443af4f89b2f76e48cd9b3af09",
                  "size": 387
                }
              ]
            }
          ]
        }
      },
      {
        "name": "shellhttpd_base_10000",
        "image": {
          "ref": "hub.foundries.io/detsch-temp-test-1/shellhttpd_base_10000@sha256:98e4fcf4df5e67ec7dcb4efb83d4d5b3dc8ca85a1fc792d4a4806e92e26228c4",
          "manifests": [
            {
              "digest": "sha256:bb28ee97ff89067d391e838cef15f80dd77659f4d5f23f2af15f48998428c0e8",
              "size": 696,
              "architecture": "amd64",
              "config": {
                "digest": "sha256:312c4b1d9d21667e7483409396b8a8c3deb3236063471c92245fba4970141e6e",
                "size": 808
              },
              "layers": [
                {
                  "digest": "sha256:f18232174bc91741fdf3da96d85011092101a032a93a388b79e99e69c2d5c870",
                  "size": 3642247
                },
                {
                  "digest": "sha256:616b7f571c8ee24772b38ccfb5418fccee5bdf443af4f89b2f76e48cd9b3af09",
                  "size": 387
                }
              ]
            }
          ]
        }
      },
      {
        "name": "shellhttpd_base_10000",
        "image": {
          "ref": "hub.foundries.io/detsch-temp-test-1/shellhttpd_base_10000@sha256:98e4fcf4df5e67ec7dcb4efb83d4d5b3dc8ca85a1fc792d4a4806e92e26228c4",
          "manifests": [
            {
              "digest": "sha256:bb28ee97ff89067d391e838cef15f80dd77659f4d5f23f2af15f48998428c0e8",
              "size": 696,
              "architecture": "amd64",
              "config": {
                "digest": "sha256:312c4b1d9d21667e7483409396b8a8c3deb3236063471c92245fba4970141e6e",
                "size": 808
              },
              "layers": [
                {
                  "digest": "sha256:f18232174bc91741fdf3da96d85011092101a032a93a388b79e99e69c2d5c870",
                  "size": 3642247
                },
                {
                  "digest": "sha256:616b7f571c8ee24772b38ccfb5418fccee5bdf443af4f89b2f76e48cd9b3af09",
                  "size": 387
                }
              ]
            }
          ]
        }
      },
      {
        "name": "shellhttpd_base_10000",
        "image": {
          "ref": "hub.foundries.io/detsch-temp-test-1/shellhttpd_base_10000@sha256:98e4fcf4df5e67ec7dcb4efb83d4d5b3dc8ca85a1fc792d4a4806e92e26228c4",
          "manifests": [
            {
              "digest": "sha256:bb28ee97ff89067d391e838cef15f80dd77659f4d5f23f2af15f48998428c0e8",
              "size": 696,
              "architecture": "amd64",
              "config": {
                "digest": "sha256:312c4b1d9d21667e7483409396b8a8c3deb3236063471c92245fba4970141e6e",
                "size": 808
              },
              "layers": [
                {
                  "digest": "sha256:f18232174bc91741fdf3da96d85011092101a032a93a388b79e99e69c2d5c870",
                  "size": 3642247
                },
                {
                  "digest": "sha256:616b7f571c8ee24772b38ccfb5418fccee5bdf443af4f89b2f76e48cd9b3af09",
                  "size": 387
                }
              ]
            }
          ]
        }
      },
      {
        "name": "shellhttpd_base_10000",
        "image": {
          "ref": "hub.foundries.io/detsch-temp-test-1/shellhttpd_base_10000@sha256:98e4fcf4df5e67ec7dcb4efb83d4d5b3dc8ca85a1fc792d4a4806e92e26228c4",
          "manifests": [
            {
              "digest": "sha256:bb28ee97ff89067d391e838cef15f80dd77659f4d5f23f2af15f48998428c0e8",
              "size": 696,
              "architecture": "amd64",
              "config": {
                "digest": "sha256:312c4b1d9d21667e7483409396b8a8c3deb3236063471c92245fba4970141e6e",
                "size": 808
              },
              "layers": [
                {
                  "digest": "sha256:f18232174bc91741fdf3da96d85011092101a032a93a388b79e99e69c2d5c870",
                  "size": 3642247
                },
                {
                  "digest": "sha256:616b7f571c8ee24772b38ccfb5418fccee5bdf443af4f89b2f76e48cd9b3af09",
                  "size": 387
                }
              ]
            }
          ]
        }
      }
    ]
  }
}

Comment thread cmd/composectl/cmd/inspect.go Outdated
},
}
currApp.Bundle.Services = append(currApp.Bundle.Services, serviceInfo)
currApp.Bundle.Digest = node.Descriptor.Digest.String()
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not correct. The app bundle digest and size are set at line #112 and # 113.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mike-sul
Copy link
Copy Markdown
Collaborator

I'm getting the name from the service URL, is that what you expected?

No, It should be the service name as it is defined in a compose project docker-compose.yml.

You can see it by running composectl show compose <> command.

I've added tiny extension to simplify getting app service name while traversing an app tree.
See this change 1e71313.
And I made use it here 2638a83.

Comment thread cmd/composectl/cmd/inspect.go Outdated
Services: []ServiceContentInfo{},
}
}
} else if depth == 2 && node.Type == compose.BlobTypeImageIndex {
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It can be depth == 2 && node.Type == compose.BlobTypeImageManifest too. In some cases the "image" in docker-compose.yml can refer to an image manifest not to an image index (e.g. a single-arch image or app).

Copy link
Copy Markdown
Collaborator

@mike-sul mike-sul Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I published an app to the detsch-x86-64 factory that contains two services, one refers to a multi-arch image (image index), and the second one to a single-arch image (an image manifest). This app can be useful to test this change. (app URI hub.foundries.io/detsch-x86-64/test-app@sha256:9beae67316af7cb47ee8296f23535394da7f75ad7528b6cd71bbed42d1081120).

 composectl inspect hub.foundries.io/detsch-x86-64/test-app@sha256:9beae67316af7cb47ee8296f23535394da7f75ad7528b6cd71bbed42d1081120
Inspecting App hub.foundries.io/detsch-x86-64/test-app@sha256:9beae67316af7cb47ee8296f23535394da7f75ad7528b6cd71bbed42d1081120...ok
app manifest: hub.foundries.io/detsch-x86-64/test-app@sha256:9beae67316af7cb47ee8296f23535394da7f75ad7528b6cd71bbed42d1081120, 802
        |
        |—> app index: sha256:410df6eb8f035b5769334fc99aa362dbe605962cca58b184b04c0e6dc8134e11, 185
        |
        |—> app bundle: sha256:5b4ab4cec212c7808ab3713975130edb40ead7d86030713d7910f9659af253d5, 564
                 |
                 |—>index: ghcr.io/foundriesio/busybox@sha256:3635a377d690475f783a1782b193cc4b8b499d24d1209ac19d36087aad49c0cd, 683
                              manifest: sha256:359e81f9b2a9be2b4ae628a146e0fab4d5b8ac8a386f4e8181f099d0f354dfc4, amd64, 527
                                        config: sha256:c1f39daffdeffeb97987901406e2ecef0fb2c2ca236fdfaf570d088426294d91, 372
                                        layer:  sha256:b916bb0fdf4067e26231af3da50785486049d50ccc5f100c272fada8ca55340d, 2220190
                              manifest: sha256:2e6f1c34ac3ecce639b71f8e3d8827fdd8ecd5f663053f064d2e0f7db092e0a8, arm64, 527
                                        config: sha256:b6bdb81e03b7525b1c21cea8d4b44ccb6bbcd2250a2868debce24fc9709c62db, 390
                                        layer:  sha256:2b918d3330127be806a78a0ee5ecb71f72a78efac357fe45b39c463a63bd4606, 1916214

                 |
                 |—>manifest: ghcr.io/foundriesio/busybox@sha256:0124622a5e535aa839c9f2d58ae95be4202bbeb2bb32917f4feaef28ab9cff44, 527
                              config: sha256:87ff76f62d367950186bde563642e39208c0e2b4afc833b4b3b01b8fef60ae9e, 372
                              layer:  sha256:a10d77880eaf7e9f53f332b86ff61f9c2b9dfe41900762958e19614687a7cb05, 2220020
composectl show compose hub.foundries.io/detsch-x86-64/test-app@sha256:9beae67316af7cb47ee8296f23535394da7f75ad7528b6cd71bbed42d1081120 
name: test-app
services:
  busybox:
    command:
      - sh
      - -c
      - while true; do sleep 50; done
    environment:
      WORKER_NAME: --name=
    image: ghcr.io/foundriesio/busybox@sha256:3635a377d690475f783a1782b193cc4b8b499d24d1209ac19d36087aad49c0cd
    labels:
      io.compose-spec.config-hash: ee53097e9d60c7510d9ff2d000fcfed5b67bc3dc0bf8de9fc4ca55a67c4c8c5d
    networks:
      default: null
  srvs-01:
    command:
      - sh
      - -c
      - while true; do sleep 50; done
    image: ghcr.io/foundriesio/busybox@sha256:0124622a5e535aa839c9f2d58ae95be4202bbeb2bb32917f4feaef28ab9cff44
    labels:
      io.compose-spec.config-hash: 8dac7cc6150bb57cefb4c5f68e0e1647905b0f0fc2344274231c657eb578d825
    networks:
      default: null
    ports:
      - mode: ingress
        target: 80
        published: "8080"
        protocol: tcp
    volumes:
      - type: bind
        source: /work/go/src/github.com/foundriesio/composeapp/config1.toml
        target: /etc/config.toml
        bind:
          create_host_path: true
networks:
  default:
    name: test-app_default

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added this change 551b04d, it looks like it works correctly now.

Feel free to restructure commits (change order and/or squash them) and then push the final version.

mike-sul and others added 2 commits April 16, 2026 09:46
Signed-off-by: Mike Sul <mike.sul@foundries.io>
Signed-off-by: Andre Detsch <andre.detsch@foundries.io>
@detsch detsch force-pushed the detsch-add-inspect-json branch from 551b04d to a7200c3 Compare April 16, 2026 13:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants