-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJustfile
More file actions
124 lines (89 loc) · 3.15 KB
/
Justfile
File metadata and controls
124 lines (89 loc) · 3.15 KB
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# OSA Monorepo Justfile
# Production deployment and development orchestration commands
mod server
default:
@just --list
# === Production Deployment ===
# Start all services in production mode
up:
docker compose -f deploy/docker-compose.yml up -d
# Start all services with logs visible
up-attached:
docker compose -f deploy/docker-compose.yml up
# Stop all services
down:
docker compose -f deploy/docker-compose.yml down
# View logs for a service (e.g., just logs server, just logs db)
logs service:
docker compose -f deploy/docker-compose.yml logs -f {{service}}
# Shell into the server container
server-shell:
docker compose -f deploy/docker-compose.yml exec server bash
# Restart just the server
server-restart:
docker compose -f deploy/docker-compose.yml restart server
# Restart all services
restart:
docker compose -f deploy/docker-compose.yml restart
# Rebuild and restart services
rebuild:
docker compose -f deploy/docker-compose.yml up -d --build
# === Development Mode ===
# Start full-stack development with hot-reload
dev:
docker compose -f deploy/docker-compose.yml -f deploy/docker-compose.dev.yml up
# Start development in background
dev-detached:
docker compose -f deploy/docker-compose.yml -f deploy/docker-compose.dev.yml up -d
# Stop development environment
dev-down:
docker compose -f deploy/docker-compose.yml -f deploy/docker-compose.dev.yml down
# Open the web UI in browser
open-ui:
open http://localhost:8080
# === Code Quality ===
# Lint all code (server + web)
lint:
cd server && just lint
cd web && pnpm lint
# === Individual Service Development ===
# Run server independently (requires database)
server-dev:
cd server && just dev
# Run web frontend independently
web-dev:
cd web && pnpm dev
# Build web frontend for production
web-build:
cd web && pnpm build
# Lint web frontend code
web-lint:
cd web && pnpm lint
# === Seed ===
# Seed the database with sample data (run while dev is up)
seed:
docker compose -f deploy/docker-compose.yml -f deploy/docker-compose.dev.yml exec server /app/.venv/bin/python /app/scripts/seed.py
# === Database ===
# Start only the database (dev mode — exposes port to host)
db-up:
docker compose -f deploy/docker-compose.yml -f deploy/docker-compose.dev.yml up -d db --wait
# Stop the database
db-down:
docker compose -f deploy/docker-compose.yml -f deploy/docker-compose.dev.yml stop db
# Connect to PostgreSQL
db-connect:
docker compose -f deploy/docker-compose.yml -f deploy/docker-compose.dev.yml exec db psql -U postgres -d osa
# === Image ===
# Print the current image tag (based on git sha)
image-tag:
@echo "ghcr.io/$(gh repo view --json owner,name -q '.owner.login')/osa:sha-$(git rev-parse --short=7 HEAD)"
# Print the tag of the latest image pushed to GHCR
image-latest:
@GH_PAGER= gh api /orgs/opensciencearchive/packages/container/osa/versions --jq '.[0].metadata.container.tags[0]'
# === Maintenance ===
# Clean up Docker resources (volumes, images, etc.)
clean:
docker compose -f deploy/docker-compose.yml down -v --rmi local
# Show service status
status:
docker compose -f deploy/docker-compose.yml ps