@docker-digital/dockernet-agent 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +120 -0
  3. package/dist/agent/agent.module.d.ts +2 -0
  4. package/dist/agent/agent.module.js +47 -0
  5. package/dist/agent/agent.module.js.map +1 -0
  6. package/dist/agent/commands/agent.command.d.ts +58 -0
  7. package/dist/agent/commands/agent.command.js +417 -0
  8. package/dist/agent/commands/agent.command.js.map +1 -0
  9. package/dist/agent/services/api.service.d.ts +13 -0
  10. package/dist/agent/services/api.service.js +116 -0
  11. package/dist/agent/services/api.service.js.map +1 -0
  12. package/dist/agent/services/config.service.d.ts +28 -0
  13. package/dist/agent/services/config.service.js +100 -0
  14. package/dist/agent/services/config.service.js.map +1 -0
  15. package/dist/agent/services/docker-event.service.d.ts +44 -0
  16. package/dist/agent/services/docker-event.service.js +141 -0
  17. package/dist/agent/services/docker-event.service.js.map +1 -0
  18. package/dist/agent/services/docker.service.d.ts +16 -0
  19. package/dist/agent/services/docker.service.js +170 -0
  20. package/dist/agent/services/docker.service.js.map +1 -0
  21. package/dist/agent/services/event-websocket-client.service.d.ts +49 -0
  22. package/dist/agent/services/event-websocket-client.service.js +248 -0
  23. package/dist/agent/services/event-websocket-client.service.js.map +1 -0
  24. package/dist/agent/services/event.service.d.ts +27 -0
  25. package/dist/agent/services/event.service.js +242 -0
  26. package/dist/agent/services/event.service.js.map +1 -0
  27. package/dist/agent/services/log.service.d.ts +19 -0
  28. package/dist/agent/services/log.service.js +176 -0
  29. package/dist/agent/services/log.service.js.map +1 -0
  30. package/dist/agent/services/machine.service.d.ts +15 -0
  31. package/dist/agent/services/machine.service.js +148 -0
  32. package/dist/agent/services/machine.service.js.map +1 -0
  33. package/dist/agent/services/profile.service.d.ts +33 -0
  34. package/dist/agent/services/profile.service.js +438 -0
  35. package/dist/agent/services/profile.service.js.map +1 -0
  36. package/dist/agent/services/volume-sync.service.d.ts +9 -0
  37. package/dist/agent/services/volume-sync.service.js +87 -0
  38. package/dist/agent/services/volume-sync.service.js.map +1 -0
  39. package/dist/agent/services/websocket-client.service.d.ts +48 -0
  40. package/dist/agent/services/websocket-client.service.js +278 -0
  41. package/dist/agent/services/websocket-client.service.js.map +1 -0
  42. package/dist/app.module.d.ts +2 -0
  43. package/dist/app.module.js +31 -0
  44. package/dist/app.module.js.map +1 -0
  45. package/dist/index.d.ts +2 -0
  46. package/dist/index.js +19 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/main.d.ts +2 -0
  49. package/dist/main.js +12 -0
  50. package/dist/main.js.map +1 -0
  51. package/dist/tsconfig.tsbuildinfo +1 -0
  52. package/package.json +103 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.command.js","sourceRoot":"","sources":["../../../src/agent/commands/agent.command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { ConfigService } from './config.service';
2
+ export declare class ApiService {
3
+ private configService;
4
+ private readonly logger;
5
+ private readonly axiosInstance;
6
+ private apiKey;
7
+ constructor(configService: ConfigService);
8
+ initialize(): Promise<void>;
9
+ setApiKey(apiKey: string): Promise<void>;
10
+ private buildUrl;
11
+ callApi<T = any>(method: 'GET' | 'POST' | 'PUT' | 'DELETE', endpoint: string, data?: any, maxRetries?: number, retryDelay?: number): Promise<T | null>;
12
+ private sleep;
13
+ }
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var ApiService_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.ApiService = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const axios_1 = require("axios");
16
+ const config_service_1 = require("./config.service");
17
+ let ApiService = ApiService_1 = class ApiService {
18
+ constructor(configService) {
19
+ this.configService = configService;
20
+ this.logger = new common_1.Logger(ApiService_1.name);
21
+ this.axiosInstance = axios_1.default.create({
22
+ timeout: 30000,
23
+ validateStatus: () => true,
24
+ });
25
+ }
26
+ async initialize() {
27
+ this.apiKey = await this.configService.getApiKey();
28
+ }
29
+ async setApiKey(apiKey) {
30
+ this.apiKey = apiKey;
31
+ }
32
+ buildUrl(endpoint) {
33
+ const baseUrl = this.configService.apiBaseUrl;
34
+ const separator = endpoint.includes('?') ? '&' : '?';
35
+ return `${baseUrl}${endpoint}${separator}api_key=${this.apiKey}`;
36
+ }
37
+ async callApi(method, endpoint, data, maxRetries = 3, retryDelay = 5000) {
38
+ if (!this.apiKey) {
39
+ this.logger.debug('API key not found, initializing...');
40
+ await this.initialize();
41
+ }
42
+ const url = this.buildUrl(endpoint);
43
+ this.logger.debug(`API call: ${method} ${url} (maxRetries: ${maxRetries === -1 ? 'infinite' : maxRetries})`);
44
+ let attempt = 0;
45
+ const infiniteRetry = maxRetries === -1 || maxRetries === Infinity;
46
+ while (infiniteRetry || attempt < maxRetries) {
47
+ attempt++;
48
+ try {
49
+ const config = {
50
+ method,
51
+ url,
52
+ headers: {
53
+ 'Content-Type': 'application/json',
54
+ },
55
+ ...(data && { data }),
56
+ timeout: endpoint === '/logs' ? 5000 : 30000,
57
+ };
58
+ const response = await this.axiosInstance.request(config);
59
+ if (response.status >= 200 && response.status < 300) {
60
+ return response.data;
61
+ }
62
+ if (infiniteRetry || attempt < maxRetries) {
63
+ const retryInfo = infiniteRetry
64
+ ? `(attempt ${attempt}, retrying infinitely)`
65
+ : `(attempt ${attempt}/${maxRetries})`;
66
+ this.logger.warn(`HTTP ${response.status} ${retryInfo}: ${response.data?.message || response.statusText}, retrying in ${retryDelay}ms...`);
67
+ await this.sleep(retryDelay);
68
+ continue;
69
+ }
70
+ this.logger.error(`HTTP ${response.status} (after ${maxRetries} attempts): ${response.data?.message || response.statusText}`);
71
+ return null;
72
+ }
73
+ catch (error) {
74
+ const isTimeoutOrConnectionError = error.code === 'ECONNREFUSED' ||
75
+ error.code === 'ETIMEDOUT' ||
76
+ error.code === 'ECONNRESET' ||
77
+ error.message?.includes('timeout') ||
78
+ error.message?.includes('Failed to connect') ||
79
+ error.message?.includes("Couldn't connect") ||
80
+ error.message?.includes('Network Error');
81
+ if (isTimeoutOrConnectionError) {
82
+ if (infiniteRetry || attempt < maxRetries) {
83
+ const retryInfo = infiniteRetry
84
+ ? `(attempt ${attempt}, retrying infinitely)`
85
+ : `(attempt ${attempt}/${maxRetries})`;
86
+ this.logger.warn(`Connection/timeout error ${retryInfo}: ${error.message}, retrying in ${retryDelay}ms...`);
87
+ await this.sleep(retryDelay);
88
+ continue;
89
+ }
90
+ }
91
+ if (!infiniteRetry && attempt < maxRetries) {
92
+ this.logger.warn(`API error (attempt ${attempt}/${maxRetries}): ${error.message}, retrying in ${retryDelay}ms...`);
93
+ await this.sleep(retryDelay);
94
+ continue;
95
+ }
96
+ if (!isTimeoutOrConnectionError) {
97
+ const retryInfo = infiniteRetry
98
+ ? `(after ${attempt} attempts, infinite retry enabled)`
99
+ : `(after ${maxRetries} attempts)`;
100
+ this.logger.error(`API call failed ${retryInfo}: ${error.message}`);
101
+ return null;
102
+ }
103
+ }
104
+ }
105
+ return null;
106
+ }
107
+ sleep(ms) {
108
+ return new Promise((resolve) => setTimeout(resolve, ms));
109
+ }
110
+ };
111
+ exports.ApiService = ApiService;
112
+ exports.ApiService = ApiService = ApiService_1 = __decorate([
113
+ (0, common_1.Injectable)(),
114
+ __metadata("design:paramtypes", [config_service_1.ConfigService])
115
+ ], ApiService);
116
+ //# sourceMappingURL=api.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.service.js","sourceRoot":"","sources":["../../../src/agent/services/api.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { ConfigService as NestConfigService } from '@nestjs/config';
2
+ export declare class ConfigService {
3
+ private nestConfigService;
4
+ private readonly configDir;
5
+ private readonly configFile;
6
+ private readonly workDir;
7
+ constructor(nestConfigService: NestConfigService);
8
+ get serverUrl(): string;
9
+ get apiBaseUrl(): string;
10
+ get pollIntervalSeconds(): number;
11
+ get configDirPath(): string;
12
+ get configFilePath(): string;
13
+ get workDirPath(): string;
14
+ get logFilePath(): string;
15
+ get pidFilePath(): string;
16
+ loadConfig(): Promise<{
17
+ apiKey?: string;
18
+ machineKey?: string;
19
+ serverUrl?: string;
20
+ }>;
21
+ saveConfig(config: {
22
+ apiKey: string;
23
+ machineKey: string;
24
+ serverUrl?: string;
25
+ }): Promise<void>;
26
+ getApiKey(): Promise<string | undefined>;
27
+ getMachineKey(): Promise<string | undefined>;
28
+ }
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ConfigService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const config_1 = require("@nestjs/config");
15
+ const fs = require("fs-extra");
16
+ const path = require("path");
17
+ const os = require("os");
18
+ let ConfigService = class ConfigService {
19
+ constructor(nestConfigService) {
20
+ this.nestConfigService = nestConfigService;
21
+ this.configDir = path.join(os.homedir(), '.dockernet-agent');
22
+ this.configFile = path.join(this.configDir, 'config');
23
+ this.workDir =
24
+ process.env.WORK_DIR || path.join(this.configDir, 'profiles');
25
+ fs.ensureDirSync(this.configDir);
26
+ fs.ensureDirSync(this.workDir);
27
+ fs.chmodSync(this.configDir, 0o700);
28
+ }
29
+ get serverUrl() {
30
+ return (process.env.SERVER_URL ||
31
+ this.nestConfigService.get('SERVER_URL') ||
32
+ 'http://100.100.10.4:3001');
33
+ }
34
+ get apiBaseUrl() {
35
+ return `${this.serverUrl}/v1/api/agent`;
36
+ }
37
+ get pollIntervalSeconds() {
38
+ return parseInt(process.env.POLL_INTERVAL_SECONDS || '5', 10);
39
+ }
40
+ get configDirPath() {
41
+ return this.configDir;
42
+ }
43
+ get configFilePath() {
44
+ return this.configFile;
45
+ }
46
+ get workDirPath() {
47
+ return this.workDir;
48
+ }
49
+ get logFilePath() {
50
+ return path.join(this.configDir, 'agent.log');
51
+ }
52
+ get pidFilePath() {
53
+ return path.join(this.configDir, 'agent.pid');
54
+ }
55
+ async loadConfig() {
56
+ if (!fs.existsSync(this.configFile)) {
57
+ return {};
58
+ }
59
+ const content = await fs.readFile(this.configFile, 'utf-8');
60
+ const config = {};
61
+ for (const line of content.split('\n')) {
62
+ const trimmed = line.trim();
63
+ if (!trimmed || trimmed.startsWith('#'))
64
+ continue;
65
+ const match = trimmed.match(/^(\w+)="?([^"]+)"?$/);
66
+ if (match) {
67
+ const [, key, value] = match;
68
+ config[key] = value;
69
+ }
70
+ }
71
+ return {
72
+ apiKey: config.API_KEY,
73
+ machineKey: config.MACHINE_KEY,
74
+ serverUrl: config.SERVER_URL || this.serverUrl,
75
+ };
76
+ }
77
+ async saveConfig(config) {
78
+ const existing = await this.loadConfig();
79
+ const content = [
80
+ `API_KEY="${config.apiKey}"`,
81
+ `SERVER_URL="${config.serverUrl || existing.serverUrl || this.serverUrl}"`,
82
+ `MACHINE_KEY="${config.machineKey}"`,
83
+ ].join('\n');
84
+ await fs.writeFile(this.configFile, content, { mode: 0o600 });
85
+ }
86
+ async getApiKey() {
87
+ const config = await this.loadConfig();
88
+ return config.apiKey;
89
+ }
90
+ async getMachineKey() {
91
+ const config = await this.loadConfig();
92
+ return config.machineKey;
93
+ }
94
+ };
95
+ exports.ConfigService = ConfigService;
96
+ exports.ConfigService = ConfigService = __decorate([
97
+ (0, common_1.Injectable)(),
98
+ __metadata("design:paramtypes", [config_1.ConfigService])
99
+ ], ConfigService);
100
+ //# sourceMappingURL=config.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../../src/agent/services/config.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { OnModuleInit } from '@nestjs/common';
2
+ export interface DockerContainerEvent {
3
+ Type: string;
4
+ Action: string;
5
+ Actor: {
6
+ ID: string;
7
+ Attributes: {
8
+ 'com.docker.compose.project'?: string;
9
+ 'com.docker.compose.service'?: string;
10
+ name?: string;
11
+ image?: string;
12
+ [key: string]: any;
13
+ };
14
+ };
15
+ time: number;
16
+ timeNano: number;
17
+ }
18
+ export interface ContainerStateChangedEvent {
19
+ profileId: string;
20
+ serviceName: string;
21
+ containerId: string;
22
+ action: string;
23
+ timestamp: number;
24
+ }
25
+ export declare class DockerEventService implements OnModuleInit {
26
+ private readonly logger;
27
+ private docker;
28
+ private eventStream;
29
+ private isListening;
30
+ private reconnectAttempts;
31
+ private readonly maxReconnectAttempts;
32
+ private readonly reconnectDelay;
33
+ constructor();
34
+ onModuleInit(): Promise<void>;
35
+ private startListeningToEvents;
36
+ private setupEventHandlers;
37
+ private handleDockerEvent;
38
+ private emitContainerStateChanged;
39
+ private handleReconnection;
40
+ private onContainerStateChanged;
41
+ onContainerStateChangedCallback(callback: (event: ContainerStateChangedEvent) => void): void;
42
+ stopListening(): void;
43
+ isActive(): boolean;
44
+ }
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var DockerEventService_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.DockerEventService = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const Docker = require("dockerode");
16
+ let DockerEventService = DockerEventService_1 = class DockerEventService {
17
+ constructor() {
18
+ this.logger = new common_1.Logger(DockerEventService_1.name);
19
+ this.eventStream = null;
20
+ this.isListening = false;
21
+ this.reconnectAttempts = 0;
22
+ this.maxReconnectAttempts = 10;
23
+ this.reconnectDelay = 5000;
24
+ this.onContainerStateChanged = null;
25
+ this.docker = new Docker();
26
+ }
27
+ async onModuleInit() {
28
+ await this.startListeningToEvents();
29
+ }
30
+ async startListeningToEvents() {
31
+ if (this.isListening) {
32
+ this.logger.warn('Already listening to Docker events');
33
+ return;
34
+ }
35
+ this.logger.log('Subscribing to Docker events...');
36
+ try {
37
+ this.eventStream = await this.docker.getEvents({
38
+ filters: {
39
+ type: ['container'],
40
+ event: [
41
+ 'start',
42
+ 'die',
43
+ 'restart',
44
+ 'pause',
45
+ 'unpause',
46
+ 'health_status',
47
+ ],
48
+ },
49
+ });
50
+ this.setupEventHandlers();
51
+ this.isListening = true;
52
+ this.reconnectAttempts = 0;
53
+ this.logger.log('Successfully subscribed to Docker events');
54
+ }
55
+ catch (error) {
56
+ this.logger.error(`Failed to subscribe to Docker events: ${error.message}`);
57
+ this.handleReconnection();
58
+ }
59
+ }
60
+ setupEventHandlers() {
61
+ if (!this.eventStream) {
62
+ return;
63
+ }
64
+ this.eventStream.on('data', (chunk) => {
65
+ try {
66
+ const event = JSON.parse(chunk.toString());
67
+ this.handleDockerEvent(event);
68
+ }
69
+ catch (error) {
70
+ this.logger.error(`Error parsing Docker event: ${error.message}`);
71
+ }
72
+ });
73
+ this.eventStream.on('error', (error) => {
74
+ this.logger.error(`Docker event stream error: ${error.message}`);
75
+ this.handleReconnection();
76
+ });
77
+ this.eventStream.on('end', () => {
78
+ this.logger.warn('Docker event stream ended');
79
+ this.handleReconnection();
80
+ });
81
+ this.eventStream.on('close', () => {
82
+ this.logger.warn('Docker event stream closed');
83
+ this.handleReconnection();
84
+ });
85
+ }
86
+ handleDockerEvent(event) {
87
+ const profileId = event.Actor.Attributes['com.docker.compose.project'];
88
+ const serviceName = event.Actor.Attributes['com.docker.compose.service'];
89
+ if (!profileId || !serviceName) {
90
+ this.logger.debug(`Event missing compose labels (profileId: ${profileId}, serviceName: ${serviceName}), skipping`);
91
+ return;
92
+ }
93
+ this.logger.debug(`Received Docker event: ${event.Action} for service ${serviceName} in profile ${profileId}`);
94
+ this.emitContainerStateChanged({
95
+ profileId,
96
+ serviceName,
97
+ containerId: event.Actor.ID,
98
+ action: event.Action,
99
+ timestamp: event.time * 1000,
100
+ });
101
+ }
102
+ emitContainerStateChanged(event) {
103
+ if (this.onContainerStateChanged) {
104
+ this.onContainerStateChanged(event);
105
+ }
106
+ }
107
+ handleReconnection() {
108
+ this.isListening = false;
109
+ this.eventStream = null;
110
+ if (this.reconnectAttempts >= this.maxReconnectAttempts) {
111
+ this.logger.error(`Max reconnection attempts (${this.maxReconnectAttempts}) reached. Stopping reconnection.`);
112
+ return;
113
+ }
114
+ this.reconnectAttempts++;
115
+ const delay = this.reconnectDelay * this.reconnectAttempts;
116
+ this.logger.warn(`Attempting to reconnect to Docker events (attempt ${this.reconnectAttempts}/${this.maxReconnectAttempts}) in ${delay}ms...`);
117
+ setTimeout(() => {
118
+ this.startListeningToEvents();
119
+ }, delay);
120
+ }
121
+ onContainerStateChangedCallback(callback) {
122
+ this.onContainerStateChanged = callback;
123
+ }
124
+ stopListening() {
125
+ this.logger.log('Stopping Docker event listening...');
126
+ this.isListening = false;
127
+ if (this.eventStream) {
128
+ this.eventStream.removeAllListeners();
129
+ this.eventStream = null;
130
+ }
131
+ }
132
+ isActive() {
133
+ return this.isListening;
134
+ }
135
+ };
136
+ exports.DockerEventService = DockerEventService;
137
+ exports.DockerEventService = DockerEventService = DockerEventService_1 = __decorate([
138
+ (0, common_1.Injectable)(),
139
+ __metadata("design:paramtypes", [])
140
+ ], DockerEventService);
141
+ //# sourceMappingURL=docker-event.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker-event.service.js","sourceRoot":"","sources":["../../../src/agent/services/docker-event.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import * as Docker from 'dockerode';
2
+ import { ConfigService } from './config.service';
3
+ export declare class DockerService {
4
+ private configService;
5
+ private readonly logger;
6
+ private docker;
7
+ constructor(configService: ConfigService);
8
+ checkDependencies(): Promise<void>;
9
+ getContainerStatus(containerName: string): Promise<string | null>;
10
+ getServiceStatus(serviceName: string, profileDir: string, profileId: string): Promise<string>;
11
+ getContainerLogs(containerName: string, tail?: number): Promise<any>;
12
+ listContainers(filters?: any): Promise<Docker.ContainerInfo[]>;
13
+ dockerLogin(registryUrl: string, username: string, password: string): Promise<boolean>;
14
+ getProfileContainers(profileId: string): Promise<Docker.ContainerInfo[]>;
15
+ isContainerRunning(containerName: string): Promise<boolean>;
16
+ }