Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

DOCKER_CONFIG env var is parsed inconsistently and incorrectly in fromDockerConfig / fromDockerContext

Abierto Apto para principiantes
#76 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
84/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
docker, typescript
Área
devops

Línea de trabajo

Empieza en lib/docker-client.ts, en fromDockerConfig y fromDockerContext, y sigue cómo cada punto de entrada resuelve DOCKER_CONFIG y la ruta predeterminada del directorio de inicio. Se considera terminado cuando ambos puntos de entrada usan de forma coherente el directorio de configuración de Docker, incluidas las rutas de config.json y contexts, conservando el comportamiento cuando DOCKER_CONFIG no está definido.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

DOCKER_CONFIG is the path to Docker's config directory (default ~/.docker), but docker-client.ts interprets it two different ways, and neither matches that.

1. fromDockerConfig treats it as the path to config.json

https://github.com/docker/node-sdk/blob/a4d38673441c1463870fe3ba7c77c067f0bf1e46/lib/docker-client.ts#L267-L270

const configPath =
    process.env.DOCKER_CONFIG ||
    join(homedir(), '.docker', 'config.json');

With DOCKER_CONFIG=/etc/docker-config, this does readFile('/etc/docker-config', 'utf8') on a directory, which fails with EISDIR. That is not ENOENT, so the "config file doesn't exist, use default" branch below doesn't catch it either — the error propagates and fromDockerConfig() throws instead of connecting. It should be join(configDir, 'config.json').

2. fromDockerContext treats it as a directory, then appends .docker

https://github.com/docker/node-sdk/blob/a4d38673441c1463870fe3ba7c77c067f0bf1e46/lib/docker-client.ts#L180-L182

const configDir = process.env.DOCKER_CONFIG || homedir();
const contextsDir = join(configDir, '.docker', 'contexts', 'meta');
const tlsDir = join(configDir, '.docker', 'contexts', 'tls');

The .docker component is only correct for the homedir() fallback. With DOCKER_CONFIG=/etc/docker-config this looks in /etc/docker-config/.docker/contexts/meta rather than /etc/docker-config/contexts/meta, so context lookup fails with Docker contexts directory not found.

The two readings are mutually inconsistent — at most one could be right for a given value of the variable.

Expected

Both should resolve the config directory the same way, e.g.

const configDir = process.env.DOCKER_CONFIG || join(homedir(), '.docker');
// config.json  -> join(configDir, 'config.json')
// contexts     -> join(configDir, 'contexts', 'meta') / join(configDir, 'contexts', 'tls')

This matches the CLI: https://docs.docker.com/reference/cli/docker/#environment-variables

Notes

Neither path misbehaves when DOCKER_CONFIG is unset, which is presumably why it hasn't come up. Affects main as of a4d3867.

Found while adapting the connection logic in docker-client.ts for another client; I haven't opened a PR. This report was written by Claude (AI-generated) and reviewed by me before filing.

Lenguaje dominante
TypeScript
Estrellas
107
Forks
12
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de docker/node-sdk

Todos los issues de docker/node-sdk

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.