Add full documentation: MkDocs setup, API reference, user guide, deployment guide
Some checks failed
Build and Push Docker Image / build-and-push (push) Failing after 55s
Some checks failed
Build and Push Docker Image / build-and-push (push) Failing after 55s
This commit is contained in:
121
docs/deployment.md
Normal file
121
docs/deployment.md
Normal file
@@ -0,0 +1,121 @@
|
||||
# Deployment
|
||||
|
||||
## Docker
|
||||
|
||||
The WebUI ships as a multi-stage Docker image.
|
||||
|
||||
### Build
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```yaml
|
||||
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
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```nginx
|
||||
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
|
||||
Reference in New Issue
Block a user