Container Workflows
Uses Podman (not Docker). The Dockerfile is a multi-stage build: Node (frontend) → Go (backend) → Alpine (runtime).
Build
bash
podman build -t agentic-registry .
Target image size: under 30MB.
Run with PostgreSQL Sidecar
bash
podman pod create --name areg-pod -p 8090:8090 podman run -d --pod areg-pod --name areg-db \ -e POSTGRES_USER=registry \ -e POSTGRES_PASSWORD=localdev \ -e POSTGRES_DB=agentic_registry \ postgres:16-alpine podman exec areg-db pg_isready -U registry --timeout=30 podman run -d --pod areg-pod --name areg-server \ -e DATABASE_URL="postgres://registry:localdev@localhost:5432/agentic_registry?sslmode=disable" \ -e SESSION_SECRET="$(openssl rand -hex 32)" \ -e CSRF_SECRET="$(openssl rand -hex 32)" \ -e CREDENTIAL_ENCRYPTION_KEY="$(openssl rand -hex 16)" \ -e ADMIN_PASSWORD="ChangeMe123!" \ agentic-registry
Health Check
bash
podman exec areg-server wget -qO- http://localhost:8090/api/v1/health/live podman exec areg-server wget -qO- http://localhost:8090/api/v1/health/ready
Cleanup
bash
podman pod stop areg-pod && podman pod rm areg-pod
Full Cycle
- •Build image
- •Start pod + PostgreSQL
- •Wait for health checks
- •Verify
/api/v1/health/liveand/api/v1/health/readyreturn 200 - •Clean up
Constraints
- •Use
podmannotdocker - •Never persist secrets in image layers
- •Use
--podnetworking (containers share localhost) - •Always clean up after testing
- •Default port: 8090