diff --git a/packages/docker/src/dockerCommands/container.ts b/packages/docker/src/dockerCommands/container.ts index 20a03a5..eee67a5 100644 --- a/packages/docker/src/dockerCommands/container.ts +++ b/packages/docker/src/dockerCommands/container.ts @@ -271,7 +271,7 @@ export async function healthCheck({ export async function containerPorts(id: string): Promise { const dockerArgs = ['port', id] const portMappings = (await runDockerCommand(dockerArgs)).trim() - return portMappings.split('\n') + return portMappings.split('\n').filter(p => !!p) } export async function registryLogin(registry?: Registry): Promise { diff --git a/packages/docker/src/hooks/prepare-job.ts b/packages/docker/src/hooks/prepare-job.ts index 076658b..581e6d1 100644 --- a/packages/docker/src/hooks/prepare-job.ts +++ b/packages/docker/src/hooks/prepare-job.ts @@ -186,15 +186,15 @@ function transformDockerPortsToContextPorts( meta: ContainerMetadata ): ContextPorts { // ex: '80/tcp -> 0.0.0.0:80' - const re = /^(\d+)\/(\w+)? -> (.*):(\d+)$/ + const re = /^(\d+)(\/\w+)? -> (.*):(\d+)$/ const contextPorts: ContextPorts = {} - if (meta.ports) { + if (meta.ports?.length) { for (const port of meta.ports) { const matches = port.match(re) if (!matches) { throw new Error( - 'Container ports could not match the regex: "^(\\d+)\\/(\\w+)? -> (.*):(\\d+)$"' + 'Container ports could not match the regex: "^(\\d+)(\\/\\w+)? -> (.*):(\\d+)$"' ) } contextPorts[matches[1]] = matches[matches.length - 1]