Add docker-compose.yml for deploying upaas (closes #223)
Check / check (pull_request) Skipped

The compose file builds the image from this repo, mounts the Docker
socket and HOST_DATA_DIR (passed to upaas as UPAAS_HOST_DATA_DIR),
reads settings from .env, and restarts unless stopped. The port is
published on 127.0.0.1 only, for a TLS-terminating proxy in front, and
PORT is pinned to 8080 so .env cannot move upaas off the port mapping
and the healthcheck, which uses the runtime image's busybox wget.

upaas now refuses to start when UPAAS_HOST_DATA_DIR is set to a
relative path; when unset it still falls back to the data directory.

The README's plain-HTTP Compose example becomes a short deploy section
that points at the file. .env is added to .dockerignore.

Model: opus-5-5
This commit is contained in:
2026-09-28 09:44:14 +00:00
parent 97a17e56a7
commit bf3048aaae
6 changed files with 96 additions and 29 deletions
+27
View File
@@ -0,0 +1,27 @@
# Runs upaas. Put settings in .env next to this file; see "Deploying with
# Docker Compose" in README.md.
services:
upaas:
build: .
restart: unless-stopped
# Every line of .env is passed to upaas as an environment variable.
env_file: .env
environment:
# Overrides any PORT in .env, so upaas listens where the port mapping
# and healthcheck below expect it.
PORT: "8080"
# The Docker daemon resolves app bind mounts on the host, so upaas must
# know the host path of its data directory.
UPAAS_HOST_DATA_DIR: ${HOST_DATA_DIR:?set HOST_DATA_DIR in .env to an absolute host path}
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${HOST_DATA_DIR:?set HOST_DATA_DIR in .env to an absolute host path}:/var/lib/upaas
# Loopback only, for a TLS-terminating reverse proxy in front. Leave
# UPAAS_PLAINTEXT_HTTP unset behind that proxy.
ports:
- "127.0.0.1:8080:8080"
healthcheck:
test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://127.0.0.1:8080/health"]
interval: 30s
timeout: 5s
retries: 3