Skip to content

Deploy with Podman

Full guide for deploying TimeNow using Podman Compose.

Architecture

┌─────────────────────────────────────────────────────────┐
│  podman-compose network: timenow_default                │
│                                                         │
│  ┌──────────────┐    ┌──────────────┐                  │
│  │   frontend   │    │   backend    │                  │
│  │  (Node.js)   │───▶│  (Scala/Play)│                  │
│  │  port 3000   │    │  port 8090   │                  │
│  └──────────────┘    └──────────────┘                  │
└─────────────────────────────────────────────────────────┘

Starting the Stack

# Full stack (frontend + backend)
podman-compose up --build

# Backend only
podman-compose up --build backend

# Detached (background)
podman-compose up -d --build

Stopping

podman-compose down

# Also remove volumes
podman-compose down -v

Profiles

The podman-compose.yml supports two profiles:

Profile Services Use case
full (default) frontend + backend Development, full feature set
iot backend only Embedded / resource-constrained
# IoT profile — backend only
podman-compose --profile iot up --build

Viewing Logs

# All services
podman-compose logs -f

# Backend only
podman-compose logs -f backend

# Last 100 lines
podman-compose logs --tail=100 backend

Rebuilding After Code Changes

# Rebuild and restart a single service
podman-compose up --build backend

# Full rebuild from scratch (clears layer cache)
podman-compose build --no-cache
podman-compose up

Health Checks

Both services expose health endpoints:

# Backend
curl http://localhost:8090/health

# Frontend (if running)
curl http://localhost:3000/

Troubleshooting

Port already in use

If port 8090 is taken, override in podman-compose.yml or set BACKEND_PORT environment variable.

Slow first build

The Scala backend downloads ~200 MB of sbt dependencies on first build. These are cached in the container layer — subsequent builds are fast.

Rootless Podman on Linux

Rootless Podman may require slirp4netns or pasta for networking. Install with: sudo apt install slirp4netns (Ubuntu/Debian).