slimtoolkit/slim · error
invalid Dockerfile
Error message
invalid Dockerfile
What it means
ErrInvalidDockerfile is a sentinel error in the dockerfile parser package indicating the Dockerfile input could not be parsed as a valid Dockerfile. It is returned by FromFile when parsing a Dockerfile from disk fails because the file is empty, unreadable, or structurally invalid. The parser cannot extract any usable instruction stream from it.
Source
Thrown at pkg/docker/dockerfile/parser/parser.go:17
// Package parser implements a Dockerfile parser
package parser
import (
"errors"
"os"
"path/filepath"
"strconv"
"strings"
"github.com/slimtoolkit/slim/pkg/docker/dockerfile/ast"
"github.com/slimtoolkit/slim/pkg/docker/dockerfile/spec"
"github.com/slimtoolkit/slim/pkg/docker/instruction"
)
var (
ErrInvalidDockerfile = errors.New("invalid Dockerfile")
)
//TODO:
//* support incremental, partial and instruction level parsing
//* support parsing from reader and from string
func FromFile(fpath string) (*spec.Dockerfile, error) {
fo, err := os.Open(fpath)
if err != nil {
return nil, err
}
defer fo.Close()
astParsed, err := ast.Parse(fo)
if err != nil {
return nil, err
}View on GitHub (pinned to 81940d17fa)
Solutions
- Verify the file at the given path exists, is non-empty, and is actually a Dockerfile (starts with a valid instruction like FROM).
- Run 'docker build' or a linter on the same Dockerfile to confirm syntax validity independently.
- Check that your tooling passes the Dockerfile path, not the build-context directory, to FromFile.
- Regenerate or restore the Dockerfile from version control if it was truncated or corrupted.
Example fix
// before ast, err := parser.FromFile(ctx, "./build") // after ast, err := parser.FromFile(ctx, "./Dockerfile")
Defensive patterns
Strategy: validation
Validate before calling
info, err := os.Stat(path)
if err != nil || info.IsDir() || info.Size() == 0 {
return fmt.Errorf("dockerfile missing or empty: %s", path)
}
// optional: sniff first line for FROM/ARG/escape directive Try / catch
if _, err := parser.FromFile(ctx, path); err != nil {
if errors.Is(err, parser.ErrInvalidDockerfile) {
// surface path + first bytes for diagnosis
}
return err
} Prevention
- Always pass a file path, not a directory, to the parser.
- Verify the file is non-empty before parsing.
- Validate Dockerfile syntax in CI with a linter or dry-run build.
- Restore Dockerfiles from VCS rather than generating ad hoc.
When it happens
Trigger: Calling dockerfile/parser FromFile with a path that points to an empty file, a non-Dockerfile text file, or a file that fails AST-level parsing.
Common situations: Pointing build tooling at the wrong path (e.g. a directory or a .dockerignore), a Dockerfile deleted or truncated by CI, or a Dockerfile with unsupported syntax from a newer builder version.
Related errors
- when using JSON array syntax, arrays must be comprised of st
- unknown instruction
- only one escape parser directive can be used
- malformed HEALTHCHECK parameters: %q
- malformed Kubernetes workload name
AI-assisted analysis of slimtoolkit/slim@81940d17fa (2026-08-31).
Data as JSON: /api/errors/978a9d10ce35c23b.
Report an issue: GitHub.