Self-hosted Docker Compose manager. - Backend: FastAPI + docker-py + SQLite (JWT auth, file-first stacks, lifecycle, live status, WebSocket logs, docker-run converter, audit log) - Frontend: React + Vite + Tailwind (login/setup, dashboard, stacks, stack detail, Monaco editor, dark/light theme) - Deployment: docker-compose.yml, Dockerfiles, nginx reverse proxy Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
31 lines
774 B
YAML
31 lines
774 B
YAML
services:
|
|
backend:
|
|
build: ./backend
|
|
image: stackpilot/backend:latest
|
|
restart: unless-stopped
|
|
environment:
|
|
- SECRET_KEY=${SECRET_KEY}
|
|
- STACKS_DIR=/opt/stacks
|
|
- DATA_DIR=/data
|
|
- HOST_PROC_PATH=/host_proc
|
|
- CORS_ORIGINS=${CORS_ORIGINS:-http://localhost:5009}
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
- ./data:/data
|
|
- ${STACKS_HOST_DIR:-./data/stacks}:/opt/stacks
|
|
- /proc:/host_proc:ro
|
|
expose:
|
|
- "5008"
|
|
# Uncomment to expose the API directly (normally proxied by the frontend):
|
|
# ports:
|
|
# - "5008:5008"
|
|
|
|
frontend:
|
|
build: ./frontend
|
|
image: stackpilot/frontend:latest
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- backend
|
|
ports:
|
|
- "5009:80"
|