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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions