pipe-cd / pipe-cd/pipecd

Improve local Docker build performance by adding a root .dockerignore

Open Beginner friendly
#6,900 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
1.4k
Forks
364
Avg merge
1d 4h
Merged PRs (30d)
84

Description

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

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Compare the relevant entries in the root .gitignore with the proposed root .dockerignore entries, then inspect cmd/pipecd/Dockerfile and its COPY . . instruction. Run make run/pipecd and verify that local and generated directories are excluded from the Docker build context without changing the final image contents.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker
Domain
build-system
Issue type
Feature
Difficulty
1/5
Estimated time
Under an hour
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
72/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.