Skip to content

Improve local Docker build performance by adding a root .dockerignore #6900

Description

@Prachi194agrawal

Problem

make run/pipecd builds the PipeCD control-plane image with:

COPY . .

but the repository does not have a root .dockerignore.

During local development setup, Docker can send a very large build context. In my local setup after running the documented dependency/setup commands, the Docker build context reached approximately 2.5 GB. Repo-local generated directories such as .dev, .cache, .artifacts, and web/node_modules are included even though they are not needed in the image build context.

Impact

  • make run/pipecd is slower than necessary for first-time and repeat local builds
  • Docker daemon disk usage grows unnecessarily
  • Makes the contributor setup experience heavier than expected, especially on first run

Suggested Improvement

Add a root .dockerignore (mirroring the relevant entries from .gitignore) to exclude local/generated directories from the build context. Suggested content:

# Version control
.git

# Local dev environment
.dev
.cache
.artifacts

# Go
vendor

# Node / web
node_modules
web/node_modules
web/dist
web/.cache
web/coverage
docs/node_modules

# Helm chart deps
.rendered-manifests
manifests/pipecd/charts
manifests/piped/charts
manifests/site/charts
manifests/helloworld/charts

# Bazel
bazel-bin
bazel-genfiles
bazel-pipecd
bazel-out
bazel-testlogs

# IDE / OS
.idea
.ijwb
.DS_Store

# Terraform
.terraform

This should significantly reduce the Docker build context size and improve the local contributor experience with no change to the final image contents.

References

  • cmd/pipecd/Dockerfile line 7: COPY . .
  • .gitignore already lists these dirs; .dockerignore entries mirror them

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions