Skip to content

Commit f2a2367

Browse files
committed
More progress
1 parent 19e8b04 commit f2a2367

File tree

4 files changed

+103
-8
lines changed

4 files changed

+103
-8
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
echo "🚀 Starting evals web service..."
6+
7+
wait_for_db() {
8+
echo "⏳ Waiting for database..."
9+
10+
# postgresql://user:password@host:port/database
11+
DB_HOST=$(echo $DATABASE_URL | sed -n 's/.*@\([^:]*\):.*/\1/p')
12+
DB_PORT=$(echo $DATABASE_URL | sed -n 's/.*:\([0-9]*\)\/.*/\1/p')
13+
DB_USER=$(echo $DATABASE_URL | sed -n 's/.*\/\/\([^:]*\):.*/\1/p')
14+
DB_NAME=$(echo $DATABASE_URL | sed -n 's/.*\/\([^?]*\).*/\1/p')
15+
16+
DB_HOST=${DB_HOST:-db}
17+
DB_PORT=${DB_PORT:-5432}
18+
DB_USER=${DB_USER:-postgres}
19+
DB_NAME=${DB_NAME:-evals_development}
20+
21+
until pg_isready -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" > /dev/null 2>&1; do
22+
echo "⏳ Database not ready yet, waiting 2 seconds..."
23+
sleep 2
24+
done
25+
26+
echo "✅ Database is ready"
27+
}
28+
29+
run_migrations() {
30+
echo "🔄 Running database migrations..."
31+
32+
if pnpm --filter @roo-code/evals db:migrate; then
33+
echo "✅ Database migrations completed successfully!"
34+
else
35+
echo "❌ Database migration failed!"
36+
exit 1
37+
fi
38+
}
39+
40+
start_web_service() {
41+
echo "🌐 Starting web service..."
42+
exec "$@"
43+
}
44+
45+
main() {
46+
if [ $# -eq 0 ]; then
47+
set -- pnpm --filter @roo-code/web-evals dev
48+
fi
49+
50+
if [ "$SKIP_MIGRATION" = "true" ]; then
51+
echo "⏭️ Skipping migration (SKIP_MIGRATION=true)"
52+
start_web_service "$@"
53+
return
54+
fi
55+
56+
if [ "$MIGRATION_ONLY" = "true" ]; then
57+
echo "🔄 Running migration only (MIGRATION_ONLY=true)"
58+
wait_for_db
59+
run_migrations
60+
echo "✅ Migration completed, exiting..."
61+
exit 0
62+
fi
63+
64+
wait_for_db
65+
run_migrations
66+
start_web_service "$@"
67+
}
68+
69+
main "$@"

packages/evals/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@
55
# docker
66
.docker/*
77
!.docker/scripts
8+
!.docker/entrypoints

packages/evals/Dockerfile.web

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ RUN npm install -g npm@latest
1111
RUN npm install -g npm-run-all
1212

1313
# Install system packages
14-
RUN apt update && apt install -y sudo curl git vim jq
14+
RUN apt update && apt install -y sudo curl git vim jq postgresql-client
1515

1616
# Install Docker CLI
1717
RUN apt install -y apt-transport-https ca-certificates gnupg lsb-release
@@ -66,7 +66,10 @@ RUN pnpm install
6666

6767
COPY --chown=vscode:vscode . ./
6868

69+
COPY --chown=vscode:vscode packages/evals/.docker/entrypoints/web.sh /usr/local/bin/entrypoint.sh
70+
RUN sudo chmod +x /usr/local/bin/entrypoint.sh
71+
6972
ENV DATABASE_URL=postgresql://postgres:password@db:5432/evals_development
7073

7174
EXPOSE 3000
72-
CMD ["pnpm", "--filter", "@roo-code/web-evals", "dev"]
75+
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]

packages/evals/docker-compose.yml

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
# docker compose build web runner
1+
# Server:
2+
# docker compose build web
3+
# docker compose --profile server up
24

3-
# docker compose up db web
4-
# docker compose up runner
5+
# Client:
6+
# docker compose build runner
57
# docker compose up runner --no-start
68
# docker run -it --rm --network evals_default evals-runner bash
79
# docker run --rm --network evals_default evals-runner sh -c "pnpm --filter @roo-code/evals cli 3"
@@ -19,8 +21,25 @@ services:
1921
- POSTGRES_USER=postgres
2022
- POSTGRES_PASSWORD=password
2123
- POSTGRES_DATABASES=evals_development,evals_test
24+
healthcheck:
25+
test: ["CMD-SHELL", "pg_isready -U postgres -d evals_development"]
26+
interval: 5s
27+
timeout: 5s
28+
retries: 5
29+
start_period: 30s
2230
profiles:
23-
- db
31+
- server
32+
33+
redis:
34+
container_name: evals-redis
35+
image: redis:7-alpine
36+
ports:
37+
- "6379:6379"
38+
volumes:
39+
- ./.docker/redis:/data
40+
command: redis-server --appendonly yes
41+
profiles:
42+
- server
2443

2544
web:
2645
container_name: evals-web
@@ -34,8 +53,11 @@ services:
3453
volumes:
3554
- /var/run/docker.sock:/var/run/docker.sock
3655
user: "0:0" # Run as root to access docker socket.
56+
depends_on:
57+
db:
58+
condition: service_healthy
3759
profiles:
38-
- web
60+
- server
3961

4062
runner:
4163
container_name: evals-runner
@@ -45,4 +67,4 @@ services:
4567
stdin_open: true
4668
tty: true
4769
profiles:
48-
- runner
70+
- client

0 commit comments

Comments
 (0)