Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 88 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# Dependencies
node_modules
npm-debug.log*
yarn-debug.log*
yarn-error.log*
bun.lockb

# Testing
coverage
.nyc_output
tests
*.test.js
*.test.ts
*.spec.js
*.spec.ts
playwright.config.ts
playwright-report

# Next.js
.next/
out/
build
dist

# Production
.vercel
.netlify

# Misc
.DS_Store
*.pem
*.log

# Debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Local env files
.env
.env*.local
.env.local.example
.env.embeddings.example

# IDE
.vscode
.idea
*.swp
*.swo
*~
.idx

# Git
.git
.gitignore
.gitattributes
.github

# Documentation
*.md
docs/
LICENSE
CODE_OF_CONDUCT
PULL_REQUEST_BODY.md
*.docx
*.png
*.jpg
*.jpeg
*.gif
*.svg
Comment on lines +60 to +70

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

# First, explore the repository structure
find . -maxdepth 2 -type f -name ".dockerignore" | head -5

Repository: QueueLab/QCX

Length of output: 71


🏁 Script executed:

# Check the full .dockerignore file to understand context
cat -n ./.dockerignore

Repository: QueueLab/QCX

Length of output: 1487


🏁 Script executed:

# Check if application uses markdown or images at runtime
git ls-files | head -30

Repository: QueueLab/QCX

Length of output: 654


🏁 Script executed:

# Look for the app/lib/components directories and check structure
fd -t d -e 'app|lib|components|public|src' --max-depth 2

Repository: QueueLab/QCX

Length of output: 38


🏁 Script executed:

# Check if markdown files are imported or referenced in the application code
rg -n '\.md["\']|import.*\.md|require.*\.md' --type=ts --type=tsx --type=js --type=jsx

Repository: QueueLab/QCX

Length of output: 124


🏁 Script executed:

# Check for image references in the application code
rg -n '\.(png|jpg|jpeg|gif|svg)["\']' --type=ts --type=tsx --type=js --type=jsx | head -20

Repository: QueueLab/QCX

Length of output: 124


🏁 Script executed:

# Check if there's a public directory with static assets
find . -type d -name 'public' -o -name 'static' -o -name 'assets' 2>/dev/null

Repository: QueueLab/QCX

Length of output: 64


🏁 Script executed:

# Look at app directory structure to understand the application
find app -type f -name '*.png' -o -name '*.jpg' -o -name '*.jpeg' -o -name '*.gif' -o -name '*.svg' 2>/dev/null | head -20

Repository: QueueLab/QCX

Length of output: 38


🏁 Script executed:

# Check if images are in public directory
ls -la public/ 2>/dev/null || echo "No public directory found"

Repository: QueueLab/QCX

Length of output: 225


🏁 Script executed:

# Check package.json to understand what kind of app this is
cat package.json | head -50

Repository: QueueLab/QCX

Length of output: 1821


🏁 Script executed:

# Check for image references in TypeScript/JavaScript files - better formatted
rg '\.png|\.jpg|\.jpeg|\.gif|\.svg' --type=ts --type=tsx --type=js --type=jsx . 2>/dev/null | head -30

Repository: QueueLab/QCX

Length of output: 38


🏁 Script executed:

# Check what images exist in public/images
ls -la public/images/

Repository: QueueLab/QCX

Length of output: 488


🏁 Script executed:

# Check if README.md is referenced in code
rg -i 'readme' --type=ts --type=tsx --type=js --type=jsx

Repository: QueueLab/QCX

Length of output: 83


🏁 Script executed:

# Check next.config or similar for static file handling
cat next.config.js next.config.ts next.config.mjs 2>/dev/null || echo "No next.config found"

Repository: QueueLab/QCX

Length of output: 495


🏁 Script executed:

# Check if Markdown files are imported as modules
rg 'import.*from.*\.md|require.*\.md' --type=ts --type=tsx --type=js --type=jsx

Repository: QueueLab/QCX

Length of output: 83


Fix Docker image to include static assets needed by the Next.js application.

The .dockerignore file excludes image files (*.png, *.svg, etc.), which removes runtime dependencies. With Next.js standalone output mode, the application requires the public/images/ directory containing logo.svg and opengraph-image.png to function correctly. These assets will be missing from the Docker container, causing broken imagery.

Markdown files (README, UPGRADE_SUMMARY, etc.) are documentation-only and safe to exclude. However, modify the image exclusions to preserve assets in public/images/:

# Documentation (safe to exclude)
*.md
docs/
LICENSE
CODE_OF_CONDUCT
PULL_REQUEST_BODY.md
*.docx

# Keep public/images but exclude other images
!public/images/
*.png
*.jpg
*.jpeg
*.gif
*.svg
🤖 Prompt for AI Agents
In .dockerignore around lines 60 to 70, image patterns (*.png, *.jpg, *.svg,
etc.) are excluding static assets needed at runtime (public/images/logo.svg and
opengraph-image.png), causing broken images in the Next.js standalone Docker
image; update the .dockerignore to stop excluding the public/images directory by
adding a negation entry for it (e.g., !public/images/) while keeping other image
excludes and documentation excludes, so public/images/ is preserved in the build
context and copied into the container.


# Docker
Dockerfile*
docker-compose*.yaml
docker-compose*.yml
.dockerignore

# CI/CD
.github/
cloudbuild.yaml

Comment on lines +59 to +81

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.dockerignore currently ignores all *.md files, which includes the newly-added documentation files. That’s fine for image size, but it also means those docs won’t be available inside the image/container if you ever want to serve them, copy them into an image layer for support bundles, or run builds that rely on markdown (some Next.js setups import MD/MDX). More importantly, you also ignore .github/ and cloudbuild.yaml—which is harmless for docker build, but can be confusing when troubleshooting Cloud Build because the Docker build context will not include the same files you see in the repo.

If the intent is only to shrink context, consider narrowing the ignore patterns to avoid surprises (e.g., ignore docs/ but not top-level operational markdown) or comment why *.md is excluded.

Suggestion

Consider replacing the broad *.md ignore with a narrower set (e.g., keep top-level operational docs) and add a comment clarifying the intent.

Example:

  • Remove *.md
  • Keep ignoring docs/
  • Or explicitly allow key docs with negation:
    • !CLOUD_BUILD_SETUP.md
    • !DOCKER_COMMANDS.md
    • !UPGRADE_SUMMARY.md

Reply with "@CharlieHelps yes please" if you’d like me to add a commit implementing a safer .dockerignore pattern.

# Drizzle
drizzle/

# Scripts
install.sh
install_bun.sh
download_index.js
Loading