fix(deploy): free port 3001 before bringing up the stack
Deploy to route.crispygoat.com / deploy (push) Failing after 13s
Build / build (push) Has been cancelled

On hosts with leftover dev processes or stuck containers from prior
attempts, docker compose fails with 'address already in use' when
trying to bind PostgREST to 127.0.0.1:3001. The previous deploy
attempt actually got as far as starting Postgres and MinIO, then
PostgREST failed at port binding — leaving the Postgres container
running, which would persist for the next attempt and keep
re-occupying 3001 indirectly.

Add a defensive pre-check: if 3001 is bound, kill the holder
(fuser -k) and remove any docker container publishing 3001, then
docker compose down --remove-orphans to clear stuck state. Sleep 3
to let the kernel release the port.
This commit is contained in:
2026-06-05 23:55:30 +00:00
parent d29835c146
commit 427c728900
+8
View File
@@ -28,6 +28,14 @@ jobs:
run: |
APP_DIR=/home/tyler/route-commerce
mkdir -p $APP_DIR
# Free port 3001 if anything is still on it (stale container, leftover dev process)
if ss -tln 2>/dev/null | grep -q ':3001 '; then
echo "Port 3001 in use, attempting to free it..."
fuser -k 3001/tcp 2>/dev/null || true
docker ps -aq --filter "publish=3001" 2>/dev/null | xargs -r docker rm -f 2>/dev/null || true
docker compose -f $APP_DIR/docker-compose.yml down --remove-orphans 2>/dev/null || true
sleep 3
fi
# Seed config files into APP_DIR if missing (they live in the repo, not in APP_DIR)
[ -f $APP_DIR/.env.example ] || cp .env.example $APP_DIR/.env.example
[ -f $APP_DIR/docker-compose.yml ] || cp docker-compose.yml $APP_DIR/docker-compose.yml