Skip to content

Commit e019ea1

Browse files
committed
Qualify local image for Podman (microsoft/vscode-remote-release#9748)
1 parent 3433701 commit e019ea1

File tree

4 files changed

+8
-9
lines changed

4 files changed

+8
-9
lines changed

src/spec-node/containerFeatures.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ export async function updateRemoteUserUID(params: DockerResolverParameters, merg
431431
'-f', destDockerfile,
432432
'-t', fixedImageName,
433433
...(platform ? ['--platform', platform] : []),
434-
'--build-arg', `BASE_IMAGE=${imageName}`,
434+
'--build-arg', `BASE_IMAGE=${params.isPodman ? 'localhost/' : ''}${imageName}`, // Podman: https://github.com/microsoft/vscode-remote-release/issues/9748
435435
'--build-arg', `REMOTE_USER=${remoteUser}`,
436436
'--build-arg', `NEW_UID=${await cliHost.getuid!()}`,
437437
'--build-arg', `NEW_GID=${await cliHost.getgid!()}`,

src/spec-node/devContainers.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { LogLevel, LogDimensions, toErrorText, createCombinedLog, createTerminal
1717
import { dockerComposeCLIConfig } from './dockerCompose';
1818
import { Mount } from '../spec-configuration/containerFeaturesConfiguration';
1919
import { getPackageConfig, PackageConfiguration } from '../spec-utils/product';
20-
import { dockerBuildKitVersion } from '../spec-shutdown/dockerUtils';
20+
import { dockerBuildKitVersion, isPodman } from '../spec-shutdown/dockerUtils';
2121
import { Event } from '../spec-utils/event';
2222

2323

@@ -203,6 +203,7 @@ export async function createDockerParams(options: ProvisionOptions, disposables:
203203
common,
204204
parsedAuthority,
205205
dockerCLI: dockerPath,
206+
isPodman: await isPodman({ exec: cliHost.exec, cmd: dockerPath, env: cliHost.env, output }),
206207
dockerComposeCLI: dockerComposeCLI,
207208
dockerEnv: cliHost.env,
208209
workspaceMountConsistencyDefault: workspaceMountConsistency,

src/spec-node/utils.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ export interface DockerResolverParameters {
9696
common: ResolverParameters;
9797
parsedAuthority: ParsedAuthority | undefined;
9898
dockerCLI: string;
99+
isPodman: boolean;
99100
dockerComposeCLI: () => Promise<DockerComposeCLI>;
100101
dockerEnv: NodeJS.ProcessEnv;
101102
workspaceMountConsistencyDefault: BindMountConsistency;

src/spec-shutdown/dockerUtils.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ export interface PartialPtyExecParameters {
7575

7676
interface DockerResolverParameters {
7777
dockerCLI: string;
78+
isPodman: boolean;
7879
dockerComposeCLI: () => Promise<DockerComposeCLI>;
7980
dockerEnv: NodeJS.ProcessEnv;
8081
common: {
@@ -167,15 +168,15 @@ export async function listContainers(params: DockerCLIParameters | PartialExecPa
167168
.filter(s => !!s);
168169
}
169170

170-
export async function getEvents(params: DockerCLIParameters | DockerResolverParameters, filters?: Record<string, string[]>) {
171+
export async function getEvents(params: DockerResolverParameters, filters?: Record<string, string[]>) {
171172
const { exec, cmd, args, env, output } = toExecParameters(params);
172173
const filterArgs = [];
173174
for (const filter in filters) {
174175
for (const value of filters[filter]) {
175176
filterArgs.push('--filter', `${filter}=${value}`);
176177
}
177178
}
178-
const format = await isPodman(params) ? 'json' : '{{json .}}'; // https://github.com/containers/libpod/issues/5981
179+
const format = params.isPodman ? 'json' : '{{json .}}'; // https://github.com/containers/libpod/issues/5981
179180
const combinedArgs = (args || []).concat(['events', '--format', format, ...filterArgs]);
180181

181182
const p = await exec({
@@ -228,11 +229,7 @@ export async function dockerCLI(params: DockerCLIParameters | PartialExecParamet
228229
});
229230
}
230231

231-
export async function isPodman(params: DockerCLIParameters | DockerResolverParameters) {
232-
const cliHost = 'cliHost' in params ? params.cliHost : params.common.cliHost;
233-
if (cliHost.platform !== 'linux') {
234-
return false;
235-
}
232+
export async function isPodman(params: PartialExecParameters) {
236233
try {
237234
const { stdout } = await dockerCLI(params, '-v');
238235
return stdout.toString().toLowerCase().indexOf('podman') !== -1;

0 commit comments

Comments
 (0)