Home
About
Blog
Products
Forum
Support
Contact
Sunbelt Computer Software
PL/B Language Development and Support
Home
About
Blog
Products
Forum
Support
Contact
sprintable/docker-compose.yml at main · moonklabs/sprintable · GitHub
Skip to content
Navigation Menu
Sign in
Products
Platform
GitHub
Repository hosting, code review, and collaboration
Copilot
AI coding agent for tasks, projects and automated work
Build & Ship
Actions
CI/CD and automation
Code Quality
Quality analysis, fixes, and enforcement
Codespaces
Cloud development environments
Secure
Code Security
Vulnerability detection and remediation
Secret Protection
Secret scanning and leak prevention
All Features
Developers
Learn
Documentation
Training
Certifications
Build
Build with Copilot
Customize Copilot
Integrations
Explore
Trending repos
GitHub Sponsors
Events
Changelog
Changelog
Your source for the latest features, improvements, and fixes across GitHub products, all in one place.
Businesses
By Stage
Enterprises
Team
Startups
Nonprofits
By Industry
Healthcare
Financial services
Manufacturing
Government
See all industries
Evaluate GitHub
Why GitHub
Customer Stories
Business insights
Trust Center
Add-ons
GitHub Advanced Security
Enterprise-grade code security
Copilot for business
Enterprise-grade AI features
Premium Support
Enterprise-grade 24/7 support
Resources
Learn & Connect
Documentation
Resource center
Blog
Events & webinars
Community Forum
Customer Stories
Integrations
Support
Customer support
Training
GitHub Status
Company
About
Partners
Changelog
GitHub Universe
GitHub Universe
The event for developers, by developers — talks, workshops, and what’s next for GitHub.
Pricing
Search
/
Sign in
Sign up
Appearance settings
You signed in with another tab or window.
Reload
to refresh your session.
You signed out in another tab or window.
Reload
to refresh your session.
You switched accounts on another tab or window.
Reload
to refresh your session.
Dismiss alert
{{ message }}
moonklabs
sprintable
Repository navigation
Code
Issues
4
(4)
Pull requests
3
(3)
Actions
Projects
Security and quality
Insights
More
items
Files
Expand file tree
main
Breadcrumbs
sprintable
/
docker-compose.yml
Copy path
Blame
More file actions
Blame
More file actions
Latest commit
History
History
History
93 lines (90 loc) · 4.43 KB
main
Breadcrumbs
sprintable
/
docker-compose.yml
Copy path
Top
File metadata and controls
Code
Blame
93 lines (90 loc) · 4.43 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#
Sprintable — self-hosted / local development
#
Quick start: make up (auto-generates .env with random secrets)
#
Manual: python3 scripts/init-env.py && docker compose up -d
services
:
db
:
#
pgvector required: alembic migrations run CREATE EXTENSION vector on fresh installs
image
:
pgvector/pgvector:pg15
restart
:
unless-stopped
volumes
:
-
./data/postgres:/var/lib/postgresql/data
environment
:
POSTGRES_DB
:
${POSTGRES_DB:-sprintable}
POSTGRES_USER
:
${POSTGRES_USER:-sprintable}
POSTGRES_PASSWORD
:
${POSTGRES_PASSWORD:-sprintable}
ports
:
-
"
${DB_PORT:-5432}:5432
"
healthcheck
:
test
:
["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-sprintable}"]
interval
:
5s
timeout
:
3s
retries
:
10
backend
:
#
image: ghcr.io/moonklabs/sprintable-backend:latest # use pre-built image when available
build
:
./backend
restart
:
unless-stopped
depends_on
:
db
:
condition
:
service_healthy
environment
:
DATABASE_URL
:
postgresql+asyncpg://${POSTGRES_USER:-sprintable}:${POSTGRES_PASSWORD:-sprintable}@db:5432/${POSTGRES_DB:-sprintable}
ALEMBIC_DATABASE_URL
:
postgresql://${POSTGRES_USER:-sprintable}:${POSTGRES_PASSWORD:-sprintable}@db:5432/${POSTGRES_DB:-sprintable}
JWT_SECRET
:
${JWT_SECRET:-change-me-in-production-min-32-chars}
SECRET_KEY
:
${SECRET_KEY:-change-me-in-production-min-32-chars}
DEBUG
:
"
True
"
#
NOTE: a fresh OSS DB now provisions via the squashed baseline migration (revision 0096),
#
which builds the exact, view-aware schema + global system seed. We deliberately do NOT set
#
SPRINTABLE_OSS_FRESH_INSTALL anymore — the create_all shortcut builds from the (drifted)
#
models and would miss the team_members VIEW etc. `bootstrap.py` → `alembic upgrade heads`
#
(story bda4beac: plural — ee_pricing branched as a separate head) runs the baseline.
#
The flag remains an explicit opt-in escape hatch only.
#
Merge-safety gate: in-review→done is blocked by a human-resolved gate when the
#
story has real evidence (linked PR / CI result). Code default is off (staged prod
#
rollout) — self-hosted compose turns it on.
H1_MERGE_GATE_ENABLED
:
"
True
"
#
Self-hosted installs usually have no email provider configured, so verification
#
emails never arrive and org creation would 403 forever. Code default stays True
#
(hosted behavior preserved) — compose relaxes it for the local stack.
REQUIRE_VERIFIED_EMAIL_FOR_ORG_CREATE
:
"
False
"
#
Backend builds verification links from NEXT_PUBLIC_APP_URL (defaults to the hosted
#
domain) — point it at this instance so console-fallback links actually work here.
NEXT_PUBLIC_APP_URL
:
${APP_BASE_URL:-http://localhost:3108}
#
Agent chat file uploads (POST /api/v2/channel/upload)
CHANNEL_FILES_DIR
:
/app/data/channel_files
#
story #2152: 자체호스팅 docker-compose는 K_SERVICE가 없으므로(Cloud Run 전용) 이걸
#
명시하지 않으면 내부 cron/firebase-internal 시크릿 게이트가 startup에서 fail-closed
#
된다(CRON_SECRET 등이 이 compose엔 안 배선돼 있음). 인터넷에 노출해 운영한다면 이
#
값을 지우고 해당 시크릿들을 직접 설정할 것.
SPRINTABLE_LOCAL_DEV
:
"
1
"
volumes
:
-
./data/channel_files:/app/data/channel_files
command
:
>
sh -c "python bootstrap.py && uvicorn app.main:app --host 0.0.0.0 --port 8000"
ports
:
-
"
${BACKEND_PORT:-8000}:8000
"
healthcheck
:
test
:
["CMD-SHELL", "python -c \"import urllib.request; urllib.request.urlopen('http://localhost:8000/api/v2/health')\" || exit 1"]
interval
:
10s
timeout
:
5s
retries
:
5
start_period
:
30s
frontend
:
#
image: ghcr.io/moonklabs/sprintable-frontend:latest # use pre-built image when available
build
:
context
:
.
dockerfile
:
Dockerfile
args
:
NEXT_PUBLIC_FASTAPI_URL
:
http://backend:8000
NEXT_PUBLIC_APP_URL
:
${APP_BASE_URL:-http://localhost:3108}
restart
:
unless-stopped
depends_on
:
backend
:
condition
:
service_healthy
environment
:
PORT
:
3108
APP_BASE_URL
:
${APP_BASE_URL:-http://localhost:3108}
NEXT_PUBLIC_APP_URL
:
${APP_BASE_URL:-http://localhost:3108}
NEXT_PUBLIC_FASTAPI_URL
:
http://backend:8000
JWT_SECRET
:
${JWT_SECRET:-change-me-in-production-min-32-chars}
ports
:
-
"
${PORT:-3108}:3108
"
You can’t perform that action at this time.