New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

docker-composter

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

docker-composter - npm Package Compare versions

Comparing version 1.1.1 to 1.2.0

26

bld/composter.js

@@ -29,2 +29,15 @@ "use strict";

this._logger.groupEnd(); // connect external containers to network
this._logger.group('connecting external containers');
await Promise.all(this.removeDuplicates(Object.keys(config.networks)).reduce((acc, val) => {
if (config.networks[val].externalContainers) {
acc = acc.concat(config.networks[val].externalContainers.map(elem => this._docker.connectContainerToNetwork(elem, val)));
}
return acc;
}, []));
this._logger.groupEnd(); // ensure containers exist

@@ -64,2 +77,15 @@

this._logger.groupEnd(); // disconnect external containers to network
this._logger.group('disconnecting external containers');
await Promise.all(this.removeDuplicates(Object.keys(config.networks)).reduce((acc, val) => {
if (config.networks[val].externalContainers) {
acc = acc.concat(config.networks[val].externalContainers.map(elem => this._docker.disconnectContainerFromNetwork(elem, val)));
}
return acc;
}, []));
this._logger.groupEnd(); // ensure all non-external networks, transient volumes, and dangling images are removed

@@ -66,0 +92,0 @@

59

bld/docker.js

@@ -257,5 +257,14 @@ "use strict";

return;
}
} // get list of containers
if (image.Containers > 0) {
const usedImageIds = (await this._request({
method: 'get',
url: '/containers/json',
params: {
all: true
}
})).data.map(elem => elem.ImageID);
if (usedImageIds.includes(image.Id)) {
this._logger.info(`image "${imageName}" is still in use`);

@@ -274,4 +283,50 @@

async connectContainerToNetwork(containerName, networkName) {
const connectedContainers = Object.values((await this._request({
method: 'get',
url: `/networks/${networkName}`
})).data.Containers).map(elem => elem.Name);
if (connectedContainers.includes(containerName)) {
this._logger.info(`container "${containerName}" is connected to network "${networkName}"`);
return;
}
await this._request({
method: 'post',
url: `/networks/${networkName}/connect`,
data: {
Container: containerName
}
});
this._logger.info(`connected container "${containerName}" to network "${networkName}"`);
}
async disconnectContainerFromNetwork(containerName, networkName) {
const connectedContainers = Object.values((await this._request({
method: 'get',
url: `/networks/${networkName}`
})).data.Containers).map(elem => elem.Name);
if (!connectedContainers.includes(containerName)) {
this._logger.info(`container "${containerName}" is not connected to network "${networkName}"`);
return;
}
await this._request({
method: 'post',
url: `/networks/${networkName}/disconnect`,
data: {
Container: containerName
}
});
this._logger.info(`disconnected container "${containerName}" from network "${networkName}"`);
}
}
exports.Docker = Docker;

2

package.json
{
"name": "docker-composter",
"version": "1.1.1",
"version": "1.2.0",
"description": "A deployment tool for Docker containers.",

@@ -5,0 +5,0 @@ "main": "bld/index.js",

@@ -69,2 +69,3 @@ ![CI](https://github.com/hannes-hochreiner/docker-composter/workflows/CI/badge.svg)

* type (optional, "external"): type of the network; "external" networks will not be removed when the command "down" is issued.
* externalContainers (optional, array\[string]): an array of names or ids of containers, which are not listed in the configuration, but should be connected to the network.
* config (optional, object): an object as described in the [Docker API](https://docs.docker.com/engine/api/v1.40/#operation/NetworkCreate); "Name" will be replaced by the name of the network as given in the networks object.

@@ -71,0 +72,0 @@

@@ -25,2 +25,12 @@ export class Composter {

this._logger.groupEnd();
// connect external containers to network
this._logger.group('connecting external containers');
await Promise.all(this.removeDuplicates(Object.keys(config.networks)).reduce((acc, val) => {
if (config.networks[val].externalContainers) {
acc = acc.concat(config.networks[val].externalContainers.map(elem => this._docker.connectContainerToNetwork(elem, val)));
}
return acc;
}, []));
this._logger.groupEnd();
// ensure containers exist

@@ -53,2 +63,12 @@ this._logger.group('creating containers');

this._logger.groupEnd();
// disconnect external containers to network
this._logger.group('disconnecting external containers');
await Promise.all(this.removeDuplicates(Object.keys(config.networks)).reduce((acc, val) => {
if (config.networks[val].externalContainers) {
acc = acc.concat(config.networks[val].externalContainers.map(elem => this._docker.disconnectContainerFromNetwork(elem, val)));
}
return acc;
}, []));
this._logger.groupEnd();
// ensure all non-external networks, transient volumes, and dangling images are removed

@@ -55,0 +75,0 @@ this._logger.group('removing networks, volumes, and images');

@@ -219,3 +219,10 @@ export class Docker {

if (image.Containers > 0) {
// get list of containers
const usedImageIds = (await this._request({
method: 'get',
url: '/containers/json',
params: {all: true}
})).data.map(elem => elem.ImageID);
if (usedImageIds.includes(image.Id)) {
this._logger.info(`image "${imageName}" is still in use`);

@@ -231,2 +238,40 @@ return;

}
async connectContainerToNetwork(containerName, networkName) {
const connectedContainers = Object.values((await this._request({
method: 'get',
url: `/networks/${networkName}`
})).data.Containers).map(elem => elem.Name);
if (connectedContainers.includes(containerName)) {
this._logger.info(`container "${containerName}" is connected to network "${networkName}"`);
return;
}
await this._request({
method: 'post',
url: `/networks/${networkName}/connect`,
data: {Container: containerName}
});
this._logger.info(`connected container "${containerName}" to network "${networkName}"`);
}
async disconnectContainerFromNetwork(containerName, networkName) {
const connectedContainers = Object.values((await this._request({
method: 'get',
url: `/networks/${networkName}`
})).data.Containers).map(elem => elem.Name);
if (!connectedContainers.includes(containerName)) {
this._logger.info(`container "${containerName}" is not connected to network "${networkName}"`);
return;
}
await this._request({
method: 'post',
url: `/networks/${networkName}/disconnect`,
data: {Container: containerName}
});
this._logger.info(`disconnected container "${containerName}" from network "${networkName}"`);
}
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc