Skip to content

Commit 679def8

Browse files
Zingzyclaude
andcommitted
fix(infra): pin static IPs, restart cloudflared on deploy
Root cause of intermittent 502s: cloudflared resolved 'app' once at startup. When app container was recreated (env changes etc), it got a new IP in compose's bridge network. Cloudflared kept dialing stale 172.18.0.2 and got connection refused. Fix: - Define explicit 'spoonet' bridge network with 172.30.0.0/24 - Pin static IPs: app=.10, tunnel=.20, vector=.30 - Workflow restarts cloudflared after every app deploy as belt-and- suspenders even though static IPs make this unnecessary Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent e8bcdb8 commit 679def8

2 files changed

Lines changed: 19 additions & 0 deletions

File tree

.github/workflows/deploy.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ jobs:
8787
chmod 600 .env
8888
docker compose --env-file .env -f docker-compose.prod.yml pull
8989
docker compose --env-file .env -f docker-compose.prod.yml up -d --remove-orphans
90+
# Restart cloudflared so it re-resolves app's IP (even though we now
91+
# pin static IPs, this guarantees fresh tunnel state after deploy).
92+
docker compose --env-file .env -f docker-compose.prod.yml restart cloudflared
9093
docker image prune -f
9194
docker compose --env-file .env -f docker-compose.prod.yml ps
9295

docker-compose.prod.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ services:
2121
start_period: 30s
2222
mem_limit: 3g
2323
mem_reservation: 512m
24+
networks:
25+
spoonet:
26+
ipv4_address: 172.30.0.10
2427
logging:
2528
driver: json-file
2629
options:
@@ -39,6 +42,9 @@ services:
3942
app:
4043
condition: service_healthy
4144
mem_limit: 128m
45+
networks:
46+
spoonet:
47+
ipv4_address: 172.30.0.20
4248
logging:
4349
driver: json-file
4450
options:
@@ -59,8 +65,18 @@ services:
5965
- /var/lib/docker/containers:/var/lib/docker/containers:ro
6066
- ./vector.toml:/etc/vector/vector.toml:ro
6167
mem_limit: 128m
68+
networks:
69+
spoonet:
70+
ipv4_address: 172.30.0.30
6271
logging:
6372
driver: json-file
6473
options:
6574
max-size: "5m"
6675
max-file: "2"
76+
77+
networks:
78+
spoonet:
79+
driver: bridge
80+
ipam:
81+
config:
82+
- subnet: 172.30.0.0/24

0 commit comments

Comments
 (0)