fix(deploy): put landing on proxy's network + runtime DNS resolve
The landing service had no networks: key, so it joined the auto 'default'
network while proxy was only on spaceshell-network + webproxy — they shared no
network, so proxy_pass to 'landing' couldn't resolve. With a static
upstream{ server landing:80 } nginx fails to boot on an unresolvable name and
restart-loops, so the proxy flapped (page intermittently up/down). Fixes:
- landing now joins spaceshell-network (shared with proxy).
- proxy.conf resolves 'landing' at request time via Docker DNS (127.0.0.11)
using a variable proxy_pass, so nginx starts even if landing is briefly down.
nginx -t passes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,9 @@ services:
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- "80"
|
||||
networks:
|
||||
# Must share a network with `proxy`, else proxy_pass to `landing` can't resolve.
|
||||
- spaceshell-network
|
||||
|
||||
proxy:
|
||||
image: nginx:1.27-alpine
|
||||
|
||||
+9
-5
@@ -1,14 +1,16 @@
|
||||
# Front nginx for spaceshell.ru — reverse-proxies the landing container and
|
||||
# serves macOS .dmg downloads from the host-mounted ./download volume.
|
||||
upstream landing_upstream {
|
||||
server landing:80;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name spaceshell.ru www.spaceshell.ru;
|
||||
|
||||
# Resolve `landing` at request time via Docker's embedded DNS, so nginx
|
||||
# starts even if the landing container is momentarily down (a static
|
||||
# `upstream { server landing:80; }` makes nginx fail to boot when the name
|
||||
# can't be resolved, restart-looping the proxy → flapping page).
|
||||
resolver 127.0.0.11 valid=10s ipv6=off;
|
||||
|
||||
# Stable download URL: /download/spacesh.dmg → ./download/spacesh.dmg on host.
|
||||
location /download/ {
|
||||
alias /srv/download/;
|
||||
@@ -21,7 +23,9 @@ server {
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://landing_upstream;
|
||||
# Variable in proxy_pass forces runtime resolution (with the resolver above).
|
||||
set $landing http://landing:80;
|
||||
proxy_pass $landing;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
|
||||
Reference in New Issue
Block a user