Andras Bacsai ce12c94709 fix: prevent duplicate services on image change and enable real-time UI refresh
This commit addresses two critical issues with Docker Compose service management:

## Issue 1: Duplicate Services Created on Image Change
When changing the image in a docker-compose file, the parser was creating new
ServiceApplication/ServiceDatabase records instead of updating existing ones.

**Root Cause**: The parsers used `firstOrCreate()` with `['name', 'image', 'service_id']`,
meaning any image change would create a new record.

**Fix**: Remove `image` from `firstOrCreate()` queries and update it separately after
finding or creating the service record.

**Changes**:
- `bootstrap/helpers/parsers.php` (serviceParser v3): Fixed in presave loop (lines 1188-1203)
  and main parsing loop (lines 1519-1539)
- `bootstrap/helpers/shared.php` (parseDockerComposeFile v2): Fixed null check logic
  (lines 1308-1348)

## Issue 2: UI Not Refreshing After Changes
When compose file or domain was modified, the Configuration component wasn't receiving
events to refresh its data, requiring manual page refresh to see updates.

**Root Cause**: The Configuration component wasn't listening for refresh events dispatched
by child components (StackForm, EditDomain).

**Fix**: Add event listeners and dispatchers to enable real-time UI updates.

**Changes**:
- `app/Livewire/Project/Service/Configuration.php`: Added listeners for `refreshServices`
  and `refresh` events (lines 36-37)
- `app/Livewire/Project/Service/EditDomain.php`: Added `refreshServices` dispatch (line 76)
- Note: `app/Livewire/Project/Service/StackForm.php` already had the dispatch

## Tests Added
- `tests/Unit/ServiceParserImageUpdateTest.php`: 4 tests verifying no duplicates created
- `tests/Unit/ServiceConfigurationRefreshTest.php`: 4 tests verifying event dispatching

All 8 new tests pass, and all existing unit tests continue to pass.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 10:12:36 +02:00
2024-10-17 10:04:49 +02:00
2023-04-03 09:31:04 +01:00
2024-12-11 08:26:36 +01:00
2023-03-17 15:33:48 +01:00
2024-10-17 21:15:48 +02:00
2024-10-17 21:15:48 +02:00
2024-11-14 11:11:55 +01:00
2025-09-15 11:50:41 +02:00
2023-03-17 15:33:48 +01:00
2022-08-30 14:43:54 +02:00
2025-10-11 18:57:58 +02:00
2024-11-11 14:54:04 +01:00
2025-04-24 20:48:54 +02:00
2023-04-03 09:31:04 +01:00
2025-10-11 19:17:09 +02:00
2025-01-07 15:31:43 +01:00
2024-11-11 13:47:31 +01:00
2025-01-22 19:57:30 +01:00

Latest Release Version

Bounty Issues

About the Project

Coolify is an open-source & self-hostable alternative to Heroku / Netlify / Vercel / etc.

It helps you manage your servers, applications, and databases on your own hardware; you only need an SSH connection. You can manage VPS, Bare Metal, Raspberry PIs, and anything else.

Imagine having the ease of a cloud but with your own servers. That is Coolify.

No vendor lock-in, which means that all the configurations for your applications/databases/etc are saved to your server. So, if you decide to stop using Coolify (oh nooo), you could still manage your running resources. You lose the automations and all the magic. 🪄

For more information, take a look at our landing page at coolify.io.

Installation

curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash

You can find the installation script source here.

Note

Please refer to the docs for more information about the installation.

Support

Contact us at coolify.io/docs/contact.

Cloud

If you do not want to self-host Coolify, there is a paid cloud version available: app.coolify.io

For more information & pricing, take a look at our landing page coolify.io.

Why should I use the Cloud version?

The recommended way to use Coolify is to have one server for Coolify and one (or more) for the resources you are deploying. A server is around 4-5$/month.

By subscribing to the cloud version, you get the Coolify server for the same price, but with:

  • High-availability
  • Free email notifications
  • Better support
  • Less maintenance for you

Donations

To stay completely free and open-source, with no feature behind the paywall and evolve the project, we need your help. If you like Coolify, please consider donating to help us fund the project's future development.

coolify.io/sponsorships

Thank you so much!

Big Sponsors

  • 23M - Your experts for high-availability hosting solutions!
  • Algora - Open source contribution platform
  • American Cloud - US-based cloud infrastructure services
  • Arcjet - Advanced web security and performance solutions
  • BC Direct - Your trusted technology consulting partner
  • Blacksmith - Infrastructure automation platform
  • Brand.dev - API to personalize your product with logos, colors, and company info from any domain
  • ByteBase - Database CI/CD and Security at Scale
  • CodeRabbit - Cut Code Review Time & Bugs in Half
  • COMIT - New York Times awardwinning contractor
  • CompAI - Open source compliance automation platform
  • Convex - Open-source reactive database for web app developers
  • CubePath - Dedicated Servers & Instant Deploy
  • Darweb - Design. Develop. Deliver. Specialized in 3D CPQ Solutions
  • Formbricks - The open source feedback platform
  • GoldenVM - Premium virtual machine hosting solutions
  • Gozunga - Seriously Simple Cloud Infrastructure
  • Hetzner - Server, cloud, hosting, and data center solutions
  • Hostinger - Web hosting and VPS solutions
  • JobsCollider - 30,000+ remote jobs for developers
  • Juxtdigital - Digital PR & AI Authority Building Agency
  • LiquidWeb - Premium managed hosting solutions
  • Logto - The better identity infrastructure for developers
  • Macarne - Best IP Transit & Carrier Ethernet Solutions for Simplified Network Connectivity
  • Mobb - Secure Your AI-Generated Code to Unlock Dev Productivity
  • PFGLabs - Build Real Projects with Golang
  • Ramnode - High Performance Cloud VPS Hosting
  • SaasyKit - Complete SaaS starter kit for developers
  • SupaGuide - Your comprehensive guide to Supabase
  • Supadata AI - Scrape YouTube, web, and files. Get AI-ready, clean data
  • Syntax.fm - Podcast for web developers
  • Tigris - Modern developer data platform
  • Tolgee - The open source localization platform
  • Ubicloud - Open source cloud infrastructure platform

Small Sponsors

OpenElements XamanApp UXWizz Evercam Imre Ujlaki jyc.dev TheRealJP 360Creators NiftyCo Dry Software Lightspeed.run LinkDr Gravity Wiz BitLaunch Best for Android Ilias Ism Formbricks Server Searcher Reshot Cirun Typebot Creating Coding Careers Internet Garden Web3 Jobs Codext Michael Mazurczak Fider Flint Paweł Pierścionek RunPod DartNode Tyler Whitesides SerpAPI Aquarela Crypto Jobs List Alfred Nutile Startup Fame Younes Barrad Jonas Jaeger Pixel Infinito Corentin Clichy Thompson Edolo Devhuset Arvensis Systems Niklas Lausch Cap-go InterviewPal

...and many more at GitHub Sponsors

Recognitions

Featured on Hacker News

Coolify - An open-source & self-hostable Heroku, Netlify alternative | Product Hunt

coollabsio%2Fcoolify | Trendshift

Core Maintainers

Andras Bacsai 🏔️ Peak
Andras Bacsai peaklabs-dev

Repo Activity

Alt

Star History

Star History Chart

S
Description
An open-source & self-hostable Heroku / Netlify / Vercel alternative.
Readme Apache-2.0 57 MiB
Languages
JavaScript 56.7%
PHP 32.8%
Blade 9.6%
Shell 0.7%
CSS 0.1%