docker-scan
v1.1.0
Published
Scan filesystem directory for Dockerfiles and create metadata output.
Downloads
642
Maintainers
Readme
Docker Scan 💾
This is a library to scan for docker images in a defined directory and associate them to (nested) groups 🔥.
Table of Contents
Installation
npm install docker-scan --save
Specification
Image
An image is in most cases represented by a Dockerfile in a directory. In some cases
the image is also described with some meta information by an image descriptor file (image.json
). But the descriptor file can also be
a replacement for the Dockerfile.
The scan result object has the following 5 base properties:
id
The Identifier is a way to identify the image beside the name property.name
Like already mentioned in th description for theid
property.groupId
The groupId is the directory name of the last group, if not otherwise specified with the id property in an image-group.json file.path
The path is the relative path on the host machine, with different path separators (windows:\\
, linux:/
) depending on the operating system.virtualPath
The virtualPath is a path only containing group ids and the own image id, seperated with/
.
These properties can be extended by providing a image.json
file in
the same directory as the Dockerfile.
Group
A group has the same base properties as an image, expect of the groupId property. The only other difference
is, that the descriptor file must be named image-group.json
.
Usage
To demonstrate the usage of the package, the test data directory path (test/data
) is used as scan path,
to simplify how to replicate the code example and use it for an own use cases.
import {scanDirectory} from "docker-scan";
(async () => {
// Provide a base directory path to scan
const directoryPath = 'test/data';
const scanResult = scanDirectory(directoryPath);
console.log(scanResult);
});
Output
{
"images": [
{
"id": "image",
"name": "Cool image",
"groupId": "group",
"path": "group\\image",
"virtualPath": "group/image"
},
{
"id": "meta-id",
"name": "MetaId",
"groupId": "sub-sub-group",
"path": "group\\undefined\\sub-sub-group\\image",
"virtualPath": "group/sub-sub-group/meta-id"
},
{
"id": "image",
"name": "image",
"groupId": null,
"path": "image",
"virtualPath": "image"
}
],
"groups": [
{
"name": "Group",
"license": "MIT",
"id": "group",
"virtualPath": "group",
"path": "group"
},
{
"name": "SubGroup",
"id": "sub-group",
"virtualPath": "group/sub-group",
"path": "group\\sub-group"
},
{
"name": "SubSubGroup",
"id": "sub-sub-group",
"virtualPath": "group/sub-sub-group",
"path": "group\\undefined\\sub-sub-group"
}
]
}
The above output was captured on a Windows machine. Therefore, the path values are seperated with \\
instead
of a /
like on a linux machine.