Docker Compose
deploy/docker-compose.yml runs the server, the worker, PostgreSQL and a small
SeaweedFS cluster, for development and evaluation only. Its credentials are
public: do not expose it.
Start
From a checkout of the repository, build and start the stack (the first build takes a few minutes):
docker compose -f deploy/docker-compose.yml up --build
Copy the certificate authority the server generates
(TLS) out of the relic-tls volume:
docker compose -f deploy/docker-compose.yml cp relic-server:/etc/relic/tls/ca.crt .
Trust ca.crt, open https://localhost:8090 and sign in as admin with the
password password.
Sign in with the relic CLI:
echo password | relic auth login https://localhost:8090 --user admin --password-stdin --context relic-dev --ca-file ca.crt
Check the sign-in:
relic auth status
Services
| Service | Notes |
|---|---|
relic-server | The server, HTTPS on 127.0.0.1:8090. Its certificate also holds the name relic-server. |
relic-worker | The worker. Grype's database is in the vulnerability-database volume. |
postgresql | PostgreSQL 18, on 127.0.0.1:5432. |
seaweedfs-master, seaweedfs-volume-1, seaweedfs-volume-2, seaweedfs-filer | SeaweedFS, replication 001 (one extra copy). |
seaweedfs-s3 | The S3 gateway, on 127.0.0.1:8333. Identities are in deploy/seaweedfs/s3.json. |
seaweedfs-create-buckets | Runs once: creates the artifacts and temporary buckets, with a one-day TTL on temporary. |
All ports bind to 127.0.0.1. See Compose settings
and Another object store.
Single node
deploy/docker-compose.single-node.yml runs one container on SQLite and a
volume, without PostgreSQL or SeaweedFS:
docker compose -f deploy/docker-compose.yml -f deploy/docker-compose.single-node.yml up --build relic-server
Stop and reset
Stop the stack and keep the data volumes:
docker compose -f deploy/docker-compose.yml down
Stop the stack and delete all data:
docker compose -f deploy/docker-compose.yml down -v