@@ -10,6 +10,7 @@ import (
10
10
"strings"
11
11
"time"
12
12
13
+ "cdr.dev/slog"
13
14
dockertypes "github.com/docker/docker/api/types"
14
15
"github.com/docker/docker/api/types/container"
15
16
"github.com/docker/docker/api/types/filters"
@@ -180,7 +181,7 @@ type ImageMetadata struct {
180
181
181
182
// GetImageMetadata returns metadata about an image such as the UID/GID of the
182
183
// provided username and whether it contains an /sbin/init that we should run.
183
- func GetImageMetadata (ctx context.Context , client Client , img , username string ) (ImageMetadata , error ) {
184
+ func GetImageMetadata (ctx context.Context , log slog. Logger , client Client , img , username string ) (ImageMetadata , error ) {
184
185
// Creating a dummy container to inspect the filesystem.
185
186
created , err := client .ContainerCreate (ctx ,
186
187
& container.Config {
@@ -258,7 +259,11 @@ func GetImageMetadata(ctx context.Context, client Client, img, username string)
258
259
Cmd : "cat" ,
259
260
Args : []string {etcOsRelease },
260
261
})
261
- if err == nil {
262
+ if err != nil {
263
+ log .Error (ctx , "read os-release" , slog .Error (err ))
264
+ log .Error (ctx , "falling back to linux for os-release ID" )
265
+ osReleaseID = "linux"
266
+ } else {
262
267
osReleaseID = GetOSReleaseID (out )
263
268
}
264
269
@@ -274,7 +279,7 @@ func GetImageMetadata(ctx context.Context, client Client, img, username string)
274
279
// UsrLibDir returns the path to the /usr/lib directory for the given
275
280
// operating system determined by the /etc/os-release file.
276
281
func (im ImageMetadata ) UsrLibDir () string {
277
- if val , ok := UsrLibDirs [im .OsReleaseID ]; ok {
282
+ if val , ok := UsrLibDirs [im .OsReleaseID ]; ok && val != "" {
278
283
return val
279
284
}
280
285
return UsrLibDirs ["linux" ] // fallback
0 commit comments