From 77b9a9673bea7a9f3d19832ce3f6e365399cd4e3 Mon Sep 17 00:00:00 2001 From: tiennm99 Date: Wed, 7 Oct 2026 09:11:29 +0700 Subject: [PATCH] build(compose): drop the misleading port from the keepalive service --- README.md | 2 +- compose.yml | 21 +++++++-------------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 7a1f646..e6103c4 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ cp config.example.yml config.yml docker compose up -d --build ``` -`compose.yml` also deploys on Coolify with the Docker Compose build pack (compose file `/compose.yml`). Coolify turns the `./config.yml` bind mount into an editable file storage; paste your config there. Keep the real `config.yml` out of git, since it holds datastore credentials. +`compose.yml` also deploys on Coolify with the Docker Compose build pack (compose file `/compose.yml`). Coolify turns the `./config.yml` bind mount into an editable file storage; paste your config there. keepalive is a background worker with no port, so leave the service without a domain. Keep the real `config.yml` out of git, since it holds datastore credentials. ## Quick start (Docker) diff --git a/compose.yml b/compose.yml index a17ca2a..8759686 100644 --- a/compose.yml +++ b/compose.yml @@ -3,20 +3,13 @@ services: build: context: . restart: unless-stopped - # keepalive reads no environment variables: every setting lives in the - # config file below. Coolify still injects its dashboard variables through - # its generated .env, so nothing needs declaring here. + # keepalive is a background worker: it opens no port and serves no HTTP, + # so there is no `expose`, no `ports`, no domain and no healthcheck (the + # distroless image has no shell or HTTP client to run one anyway). # - # The app has no HTTP server. `expose` only mirrors the port the Coolify - # app was configured with; it publishes nothing on the host, and nothing - # answers on it. - expose: - - "3000" - # The app reads /config.yml (see config.go). Coolify turns this bind mount - # into an editable file storage; locally, copy config.example.yml to - # config.yml first. The real config holds datastore credentials, so never - # commit it. + # Every setting lives in the config file; the app reads no environment + # variables. The real config holds datastore credentials, so never commit + # it: locally, copy config.example.yml to config.yml; on Coolify, this bind + # mount becomes an editable file storage. volumes: - ./config.yml:/config.yml:ro - # No healthcheck: the distroless image ships no shell or HTTP client to - # run one, and the Dockerfile defines none.