@@ -30,10 +30,11 @@ that:
3030## What's in here
3131
3232* ` Dockerfile ` — thin wrapper around ` doccano/doccano:backend ` pinning
33- the upstream version this sample tracks. Future doccano releases
34- that change the bug-triggering shape are addressed by retagging
35- here, not by scattering version pins across the lane scripts in
36- ` keploy/integrations ` / ` keploy/enterprise ` .
33+ the upstream version this sample tracks and installing the
34+ sample entrypoint that honors ` DOCCANO_SKIP_BOOTSTRAP=1 ` . Future
35+ doccano releases that change the bug-triggering shape are addressed
36+ by retagging here, not by scattering version pins across the lane
37+ scripts in ` keploy/integrations ` / ` keploy/enterprise ` .
3738* ` docker-compose.yml ` — the orchestration: postgres-13 alongside
3839 the doccano backend, on a fixed subnet so the lane scripts can
3940 rely on stable IPs across record/replay phases.
@@ -55,13 +56,20 @@ that:
5556``` sh
5657docker compose up -d
5758./flow.sh bootstrap
59+
60+ docker compose down
61+ DOCCANO_SKIP_BOOTSTRAP=1 docker compose up -d
5862./flow.sh record-traffic
63+
5964docker compose down -v
6065```
6166
6267This is what the keploy/integrations and keploy/enterprise CI
6368lanes wrap in ` keploy record ` / ` keploy test ` — the base compose
64- is uninstrumented and runs unchanged inside those lanes.
69+ is uninstrumented and runs unchanged inside those lanes. The first
70+ launch runs doccano's migrations and creates the admin user; the
71+ second launch skips bootstrap and starts gunicorn directly against
72+ the populated database volume.
6573
6674### Without keploy — measuring real Python line coverage
6775
@@ -72,10 +80,14 @@ add `coverage.py` per-worker tracking:
7280mkdir -p coverage
7381docker compose -f docker-compose.yml -f docker-compose.coverage.yml up -d --build
7482./flow.sh bootstrap
83+
84+ docker compose -f docker-compose.yml -f docker-compose.coverage.yml down
85+ DOCCANO_SKIP_BOOTSTRAP=1 docker compose -f docker-compose.yml -f docker-compose.coverage.yml up -d --build
7586./flow.sh record-traffic
87+
7688docker compose -f docker-compose.yml -f docker-compose.coverage.yml kill -s SIGTERM backend
7789sleep 3
78- docker compose -f docker-compose.yml -f docker-compose.coverage.yml up -d backend
90+ DOCCANO_SKIP_BOOTSTRAP=1 docker compose -f docker-compose.yml -f docker-compose.coverage.yml up -d backend
7991./flow.sh coverage
8092docker compose -f docker-compose.yml -f docker-compose.coverage.yml down -v
8193```
@@ -91,17 +103,19 @@ ignore it and run the base compose, paying zero coverage cost.
91103``` sh
92104docker compose up -d
93105./flow.sh bootstrap
106+ docker compose down
94107
95108# In one shell:
96- keploy record -c " docker compose up" --container-name doccano_backend \
109+ keploy record -c " DOCCANO_SKIP_BOOTSTRAP=1 docker compose up" --container-name doccano_backend \
97110 --proxy-port 18081 --dns-port 18082
98111
99112# In another shell:
100113./flow.sh record-traffic
101114# SIGINT keploy when traffic returns
102115
103- keploy test -c " docker compose up" --containerName doccano_backend \
104- --apiTimeout 60 --delay 20 --proxy-port 18081 --dns-port 18082
116+ keploy test -c " DOCCANO_SKIP_BOOTSTRAP=1 docker compose up" --containerName doccano_backend \
117+ --apiTimeout 60 --delay 20 --host 127.0.0.1 --port 18080 \
118+ --proxy-port 18081 --dns-port 18082
105119```
106120
107121Expected outcome with the integrations fix in place: 0 failures,
0 commit comments