Repository navigation
Docker
Fabio Nigi edited this page Oct 2, 2026
·
1 revision
Two ways to run the same app:
| From the source (clone) | Prebuilt image (no clone) | |
|---|---|---|
| Get it |
git clone + ./install.sh
|
download jobagent + ./jobagent init
|
| Image | built on your machine |
ghcr.io/nigifabio/swiss-job-agent, amd64 + arm64 (Raspberry Pi 4/5, Apple silicon) |
| Compose file | docker-compose.yml |
docker-compose.image.yml |
| Update |
./jobagent update (= ./install.sh upgrade) |
./jobagent update (pulls the new image) |
Both keep everything in data/ next to the compose file and read settings from .env.
mkdir swiss-job-agent && cd swiss-job-agent
curl -fsSLO https://raw.githubusercontent.com/nigifabio/swiss-job-agent/main/jobagent
chmod +x jobagent
./jobagent init # downloads docker-compose.image.yml and creates .env (port, listen address)
./jobagent up # pulls the image, starts web + scheduler, waits until healthyOpen http://127.0.0.1:8080 and follow the setup wizard. Every other setting is in .env
(documented in .env.example) or on the app's Settings page.
| Tag | What |
|---|---|
latest |
the newest build of main
|
1.2.3, 1.2
|
a release, and the newest patch of that minor version |
sha-abc1234 |
one exact build |
Pin a version by setting IMAGE in .env, e.g. IMAGE=ghcr.io/nigifabio/swiss-job-agent:1.2.
curl -fsSLO https://raw.githubusercontent.com/nigifabio/swiss-job-agent/main/docker-compose.image.yml
curl -fsSL https://raw.githubusercontent.com/nigifabio/swiss-job-agent/main/.env.example -o .env
mkdir -p data # on Linux: sudo chown 1000:1000 data (the app runs as uid 1000)
docker compose -f docker-compose.image.yml up -dOr a single container (no scheduled scans, use Scan now):
docker run -d --name jobagent -p 127.0.0.1:8080:8080 --env-file .env \
-v "$PWD/data:/data" ghcr.io/nigifabio/swiss-job-agent:latestThe wrapper works in a clone (builds from the source) and in a folder with only the image.
| Command | What it does |
|---|---|
./jobagent init |
image mode: download the compose file, create .env
|
./jobagent up / down / restart
|
start (pull or build, then health check), stop, restart |
./jobagent status |
containers and health |
./jobagent logs [-f] |
web and scheduler logs |
./jobagent scan |
scan all sources now |
./jobagent rescore |
recompute match scores after changing SCORE_KEYWORDS in .env
|
./jobagent discover <seeds> |
find company career sites: a seed list in the image (app/companies.romandie.txt, app/companies.seed.txt, app/companies.vaud-services.txt) or your own file in this folder |
./jobagent verify-boards |
re-check the watchlist, drop boards of other companies |
./jobagent update |
new version, with a backup first; goes back to the previous image or commit if the new one isn't healthy |
./jobagent backup |
database and files into backups/
|
./jobagent shell |
shell inside the web container |
- Base
python:3.13-slim, runs as the unprivileged userapp(uid 1000), port 8080, data in/data. - Built health check on
/healthz. - Built by GitHub Actions after the tests pass: see releasing.
Swiss Job Agent
- Home
- Installation
- Docker image & jobagent
- User guide
- Sources
- Profiles, CVs and letters
- Platform
- Releasing
- Security
These pages are generated from docs/ in the repo: edit them there.