Skip to content

Commit b5f1df6

Browse files
Correct docker-compose handling for containers that don't publish their superserver port (#1613)
1 parent b9d1ebb commit b5f1df6

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

src/extension.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ export async function checkConnection(
381381
workspaceState.update(wsKey + ":docker", withDocker);
382382
workspaceState.update(wsKey + ":dockerService", service);
383383
if (withDocker) {
384-
if (!dockerPort || !dockerSuperserverPort) {
384+
if (!dockerPort) {
385385
const errorMessage = `Something is wrong with your docker-compose connection settings, or your service is not running.`;
386386
handleError(errorMessage);
387387
panel.text = `${PANEL_LABEL} $(error)`;
@@ -394,7 +394,7 @@ export async function checkConnection(
394394
workspaceState.update(wsKey + ":host", "localhost");
395395
workspaceState.update(wsKey + ":port", dockerPort);
396396
}
397-
if (dockerSuperserverPort !== superserverPort) {
397+
if (dockerSuperserverPort && dockerSuperserverPort !== superserverPort) {
398398
workspaceState.update(wsKey + ":superserverPort", dockerSuperserverPort);
399399
}
400400
connInfo = `localhost:${dockerPort}[${ns}]`;

src/utils/index.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -442,7 +442,7 @@ async function composeCommand(cwd?: string): Promise<string> {
442442

443443
export async function portFromDockerCompose(
444444
workspaceFolderName?: string
445-
): Promise<{ port: number; superserverPort: number; docker: boolean; service?: string }> {
445+
): Promise<{ port: number | null; superserverPort: number | null; docker: boolean; service?: string }> {
446446
// When running remotely, behave as if there is no docker-compose object within objectscript.conn
447447
if (extensionContext.extension.extensionKind === vscode.ExtensionKind.Workspace) {
448448
return { docker: false, port: null, superserverPort: null };
@@ -512,6 +512,10 @@ export async function portFromDockerCompose(
512512

513513
exec(`${cmd} port --protocol=tcp ${service} ${internalSuperserverPort}`, { cwd }, (error, stdout) => {
514514
if (error) {
515+
// Not an error if we were merely looking for the default port and the container doesn't publish it
516+
if (!dockerCompose.internalSuperserverPort) {
517+
resolve(result);
518+
}
515519
reject(error.message);
516520
}
517521
const [, superserverPort] = stdout.match(/:(\d+)/) || [];

0 commit comments

Comments
 (0)