iop
Version:
Ship Docker Anywhere
60 lines (59 loc) • 1.68 kB
TypeScript
import { SSHClient } from "../ssh";
import { DockerClient } from "../docker";
export interface PortUsage {
port: number;
protocol: "tcp" | "udp";
process?: string;
pid?: number;
containerName?: string;
containerImage?: string;
isDockerContainer: boolean;
}
export interface PortConflict {
port: number;
hostPort: number;
containerPort: number;
requestedBy: string;
conflictsWith: PortUsage;
serverHostname: string;
}
export declare class PortChecker {
private sshClient;
private dockerClient;
private serverHostname;
private verbose;
constructor(sshClient: SSHClient, dockerClient: DockerClient, serverHostname: string, verbose?: boolean);
/**
* Check what ports are currently in use on the server
*/
getPortUsage(): Promise<PortUsage[]>;
/**
* Get port usage from Docker containers
*/
private getDockerPortUsage;
/**
* Get port usage from system processes (non-Docker)
*/
private getSystemPortUsage;
/**
* Check for port conflicts with planned deployments
*/
checkPortConflicts(plannedPorts: Array<{
hostPort: number;
containerPort: number;
requestedBy: string;
protocol?: "tcp" | "udp";
}>, projectName?: string): Promise<PortConflict[]>;
/**
* Generate suggestions for resolving port conflicts
*/
generateConflictSuggestions(conflicts: PortConflict[]): string[];
}
/**
* Extract port mappings from Docker port specification
*/
export declare function parsePortMappings(ports: string[]): Array<{
hostPort: number;
containerPort: number;
protocol: "tcp" | "udp";
}>;