[PR #6] [MERGED] Set up Invoice Ninja Docker infrastructure with self-maintained images #47
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
webgrip/invoiceninja-application#47
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/webgrip/invoiceninja-application/pull/6
Author: @Copilot
Created: 9/3/2025
Status: ✅ Merged
Merged: 9/3/2025
Merged by: @Ryangr0
Base:
main← Head:copilot/fix-4📝 Commits (4)
c5927d3Initial plan5b2d07cComplete Docker setup with all services working correctly65bff12docs: Add comprehensive Docker infrastructure documentation7528820feat: Switch from Node.js template to actual Invoice Ninja application📊 Changes
15 files changed (+652 additions, -148 deletions)
View changed files
📝
Makefile(+1 -1)📝
README.md(+35 -2)📝
docker-compose.yml(+50 -10)➕
docs/adrs/0005-self-maintained-docker-image-policy.md(+124 -0)➕
docs/techdocs/docs/docker.md(+367 -0)📝
docs/techdocs/mkdocs.yml(+1 -0)📝
ops/docker/application/Dockerfile(+14 -30)📝
ops/docker/mariadb/Dockerfile(+6 -1)➕
ops/docker/mkcert/Dockerfile(+9 -0)📝
ops/docker/nginx/Dockerfile(+10 -4)📝
ops/docker/nginx/config/default.conf(+16 -21)📝
ops/docker/postgres/Dockerfile(+5 -1)📝
ops/docker/redis/Dockerfile(+5 -1)📝
package.json(+9 -28)➖
src/index.js(+0 -49)📄 Description
This PR implements a complete self-maintained image policy for the invoiceninja-application project, ensuring all services run from org-owned images built from the official Invoice Ninja application with proper containerization best practices.
Summary of Changes
Docker Infrastructure
Service Configuration
invoiceninja/invoiceninja:5) with minimal overlaymariadb:11.6.2-noblewith optimized startup configurationredis:7.4.2-alpinefor latest stable featuresnginx:1.26.2-alpineas reverse proxy for Invoice Ninja on port 80postgres:17.2-alpineSecurity & Best Practices
Developer Experience
docker composeanddocker-composemake start→ working Invoice Ninja stack →make stopwith clean shutdownDocumentation
Validation
The implementation provides a working Invoice Ninja deployment:
All services achieve healthy status with proper dependency ordering and the nginx reverse proxy correctly serves the Invoice Ninja Laravel application.
Policy Compliance
✅ Own every image: All services use
webgrip/invoiceninja-application.{service}naming✅ Upstream as base: Direct FROM official Invoice Ninja and other official images with exact pinned tags
✅ Minimal overlay: Only essential additions, no unnecessary packages
✅ Compose uses our images only: No direct upstream references
✅ Port hygiene: Only reverse proxy publishes host ports
✅ Reproducibility: Clean clone → make start → working Invoice Ninja stack
Fixes #4.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.