Public and internal-only
A service is either:- Public: Caddy listens on its host port (and any custom domains) and forwards to the container. Its own port is never published to the network directly.
- Internal only: no host port, no route. Only other containers on Mangrove’s network can reach it. Databases from templates are internal only by default.
Talking to other services
Mangrove runs every container on one Docker network,mangrove-net (set
with MANGROVE_NETWORK). Each service gets a stable network alias that
survives redeploys:
app, so a Postgres template
installed with the slug blog-db is reachable at mangrove-blog-db-app:5432.
Templates that install several deployments fill these in for you.
The service card on the Overview tab shows it as Internal address.
Use the alias, never a container IP or the per-deploy container name.
Both change on every deploy.
Compose stacks
A compose stack runs on the network its compose file defines (by default, a network of its own), and services inside it reach each other by their compose service names. Ports listed underports: in the compose file are
published by Docker directly, not through Caddy. See
Compose stacks.
The Mangrove API
Mangrove’s own API and dashboard listen on127.0.0.1:7777 only. Put them
behind HTTPS to reach them from elsewhere. See
Going to production.