The couchdb:3 image purges curl after the build, so the curl-based healthcheck could never succeed. The cors.ini bind-mount also looks like the cause of the ~600ms container exit observed in the first two Coolify deploys. Both pieces are removed; CORS is now applied by the init sidecar via PUTs against /_node/_local/_config/..., which is idempotent on redeploy.
38 lines
1.6 KiB
Markdown
38 lines
1.6 KiB
Markdown
# coolcouch
|
|
|
|
CouchDB 3 on Coolify. The `couchdb-init` sidecar waits for the server to come up, creates the three system databases, and enables CORS via the config API — no file mounts required.
|
|
|
|
## Deploy
|
|
|
|
1. In Coolify: **New Resource → Docker Compose** and point it at this repository.
|
|
2. In the resource's **Environment Variables** tab, set:
|
|
- `COUCHDB_PASSWORD` — required
|
|
- `COUCHDB_USER` — optional, defaults to `admin`
|
|
3. In the resource's **Domains** tab, assign a domain to the `couchdb` service on port `5984`. Coolify fills `SERVICE_FQDN_COUCHDB_5984` from this.
|
|
4. **Deploy.** `couchdb-init` runs once, exits, and won't restart.
|
|
|
|
## Verify
|
|
|
|
Replace `$DOMAIN` and `$PASS`:
|
|
|
|
```bash
|
|
curl -fsS https://$DOMAIN/_up
|
|
curl -fsS -u admin:$PASS https://$DOMAIN/
|
|
curl -fsS -u admin:$PASS https://$DOMAIN/_all_dbs
|
|
curl -fsS -I -X OPTIONS https://$DOMAIN/ \
|
|
-H "Origin: https://example.com" \
|
|
-H "Access-Control-Request-Method: GET"
|
|
```
|
|
|
|
Expected: `_up` returns `{"status":"ok",...}`; `/` returns the CouchDB welcome JSON; `_all_dbs` returns `["_global_changes","_replicator","_users"]`; the preflight returns 2xx with an `Access-Control-Allow-Origin` header.
|
|
|
|
If the init logs show CORS errors, you can re-trigger only that step by redeploying — the PUTs against `/_node/_local/_config/...` are idempotent.
|
|
|
|
## CORS
|
|
|
|
Wildcard origin (`*`) with `credentials = false` — the only browser-spec-legal combination with a wildcard. For credentialed auth from the browser, edit the `put_config cors origins`/`credentials` lines in `docker-compose.yml`.
|
|
|
|
## Files
|
|
|
|
- `docker-compose.yml` — services, volume, Traefik labels, init sidecar
|