Unpack all image and not just the last layer (#27)
The go program we use to get binaries from a docker image was unpacking only the last layer. This is not required and in order to have a more generic approach and fewest requirement the program now unpack all the image
This commit is contained in:
commit
2db68f09b6
@ -98,14 +98,14 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
err = copyBinaryFromLastLayer(path.Join(imgsDir, imgDir), path.Join(releaseDir, imgDir), binaryToCopy)
|
err = untarLayers(path.Join(imgsDir, imgDir), path.Join(releaseDir, imgDir), binaryToCopy)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func copyBinaryFromLastLayer(src, dest, binaryPath string) error {
|
func untarLayers(src, dest, binaryPath string) error {
|
||||||
b, err := ioutil.ReadFile(path.Join(src, "manifest.json"))
|
b, err := ioutil.ReadFile(path.Join(src, "manifest.json"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -114,14 +114,15 @@ func copyBinaryFromLastLayer(src, dest, binaryPath string) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
last := man.LayerInfos()[len(man.LayerInfos())-1]
|
for _, l := range man.LayerInfos() {
|
||||||
layerTar, err := os.Open(path.Join(src, last.Digest.String()[7:]))
|
layerTar, err := os.Open(path.Join(src, l.Digest.String()[7:]))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
err = tar.Untar(src, layerTar)
|
err = tar.Untar(src, layerTar)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
input, err := ioutil.ReadFile(path.Join(src, binaryPath))
|
input, err := ioutil.ReadFile(path.Join(src, binaryPath))
|
||||||
|
Loading…
Reference in New Issue
Block a user