Files
work-queue-webui/docs/deployment.md
Lennie S. eef22f2d92
Some checks failed
Build and Push Docker Image / build-and-push (push) Failing after 55s
Add full documentation: MkDocs setup, API reference, user guide, deployment guide
2026-04-12 01:45:34 +00:00

2.6 KiB

Deployment

Docker

The WebUI ships as a multi-stage Docker image.

Build

git clone https://git.danhenry.dev/thelab/work-queue-webui.git
cd work-queue-webui
docker build -t git.danhenry.dev/thelab/work-queue-webui:latest .

Run

docker run -d \
  --name work-queue-webui \
  -p 8081:80 \
  git.danhenry.dev/thelab/work-queue-webui:latest

The WebUI will be available at http://localhost:8081.

Environment

Variable Default Description
WORK_QUEUE_API_URL http://app-01:8080 Work Queue API endpoint

Volumes

Path Description
/app/data Persistent data directory

Docker Compose

services:
  webui:
    image: git.danhenry.dev/thelab/work-queue-webui:latest
    volumes:
      - ./data:/app/data
    restart: unless-stopped

  proxy:
    image: nginx:alpine
    ports:
      - "8081:80"
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
    depends_on:
      webui:
        condition: service_healthy
    restart: unless-stopped

volumes:
  data:

Ansible

An Ansible role is available in roles/work_queue_webui/. See the role's defaults/main.yml for configuration options.

Variables

Variable Default Description
work_queue_webui_image_tag latest Docker image tag
work_queue_webui_proxy_port 8081 External port
work_queue_webui_data_path .../work-queue-webui/data Data volume path

Deploy

cd infrastructure/ansible
ansible-playbook -i inventory playbooks/services/work_queue_webui.yml

Nginx Reverse Proxy

If deploying behind an existing nginx instance, proxy to the container port:

location / {
    proxy_pass http://localhost:8081;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

Health Check

The WebUI exposes a basic health endpoint at /health (returns {"status": "ok"}). The container uses wget to verify the nginx frontend is responding.


CI Pipeline

A Gitea Actions workflow (.gitea/workflows/docker.yml) automatically builds and pushes the image on every push to main:

  • Triggers: push to main
  • Platforms: linux/amd64, linux/arm64
  • Tags: git.danhenry.dev/thelab/work-queue-webui:<sha> and :latest
  • Registry: Gitea container registry at git.danhenry.dev

Required secrets in the repo:

  • DOCKER_REGISTRY_USER — Gitea username
  • DOCKER_REGISTRY_TOKEN — Gitea API token