diff --git a/src/extension.ts b/src/extension.ts index 7e0eca9f..b2cf9a29 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -381,7 +381,7 @@ export async function checkConnection( workspaceState.update(wsKey + ":docker", withDocker); workspaceState.update(wsKey + ":dockerService", service); if (withDocker) { - if (!dockerPort || !dockerSuperserverPort) { + if (!dockerPort) { const errorMessage = `Something is wrong with your docker-compose connection settings, or your service is not running.`; handleError(errorMessage); panel.text = `${PANEL_LABEL} $(error)`; @@ -394,7 +394,7 @@ export async function checkConnection( workspaceState.update(wsKey + ":host", "localhost"); workspaceState.update(wsKey + ":port", dockerPort); } - if (dockerSuperserverPort !== superserverPort) { + if (dockerSuperserverPort && dockerSuperserverPort !== superserverPort) { workspaceState.update(wsKey + ":superserverPort", dockerSuperserverPort); } connInfo = `localhost:${dockerPort}[${ns}]`; diff --git a/src/utils/index.ts b/src/utils/index.ts index 40935b85..c4706b2e 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -442,7 +442,7 @@ async function composeCommand(cwd?: string): Promise { export async function portFromDockerCompose( workspaceFolderName?: string -): Promise<{ port: number; superserverPort: number; docker: boolean; service?: string }> { +): Promise<{ port: number | null; superserverPort: number | null; docker: boolean; service?: string }> { // When running remotely, behave as if there is no docker-compose object within objectscript.conn if (extensionContext.extension.extensionKind === vscode.ExtensionKind.Workspace) { return { docker: false, port: null, superserverPort: null }; @@ -512,6 +512,10 @@ export async function portFromDockerCompose( exec(`${cmd} port --protocol=tcp ${service} ${internalSuperserverPort}`, { cwd }, (error, stdout) => { if (error) { + // Not an error if we were merely looking for the default port and the container doesn't publish it + if (!dockerCompose.internalSuperserverPort) { + resolve(result); + } reject(error.message); } const [, superserverPort] = stdout.match(/:(\d+)/) || [];