fix(scaffold): split api:8522/web:8521, fix nginx proxy to host.docker.internal

This commit is contained in:
pyr0ball 2026-05-04 17:02:41 -07:00
parent 3a0608ff98
commit 3c9598c443
5 changed files with 22 additions and 13 deletions

7
.gitignore vendored
View file

@ -22,3 +22,10 @@ web/dist/
# Docker override (local dev extras) # Docker override (local dev extras)
compose.override.yml compose.override.yml
# macOS
.DS_Store
# Logs and runtime files
*.log
*.db

View file

@ -26,6 +26,6 @@ RUN conda run -n pagepiper pip install --no-cache-dir -e "/app/circuitforge-core
WORKDIR /app/pagepiper WORKDIR /app/pagepiper
RUN conda run -n pagepiper pip install --no-cache-dir -e . RUN conda run -n pagepiper pip install --no-cache-dir -e .
EXPOSE 8521 EXPOSE 8522
CMD ["conda", "run", "--no-capture-output", "-n", "pagepiper", \ CMD ["conda", "run", "--no-capture-output", "-n", "pagepiper", \
"uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8521"] "uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8522"]

View file

@ -16,6 +16,8 @@ services:
dockerfile: docker/web/Dockerfile dockerfile: docker/web/Dockerfile
ports: ports:
- "8521:80" - "8521:80"
extra_hosts:
- "host.docker.internal:host-gateway"
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
- api - api

View file

@ -8,9 +8,9 @@ server {
try_files $uri $uri/ /index.html; try_files $uri $uri/ /index.html;
} }
# Proxy API requests to FastAPI # Proxy API requests to FastAPI (host network, port 8522)
location /api/ { location /api/ {
proxy_pass http://localhost:8521; proxy_pass http://host.docker.internal:8522;
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
} }

View file

@ -5,8 +5,8 @@ SERVICE=pagepiper
WEB_PORT=8521 WEB_PORT=8521
COMPOSE_FILE="compose.yml" COMPOSE_FILE="compose.yml"
OVERRIDE_FLAG="" OVERRIDE_ARGS=()
[[ -f "compose.override.yml" ]] && OVERRIDE_FLAG="-f compose.override.yml" [[ -f "compose.override.yml" ]] && OVERRIDE_ARGS=(-f compose.override.yml)
usage() { usage() {
echo "Usage: $0 {start|stop|restart|status|logs [svc]|open|build|test}" echo "Usage: $0 {start|stop|restart|status|logs [svc]|open|build|test}"
@ -18,28 +18,28 @@ shift || true
case "$cmd" in case "$cmd" in
start) start)
docker compose -f "$COMPOSE_FILE" $OVERRIDE_FLAG up -d --build docker compose -f "$COMPOSE_FILE" "${OVERRIDE_ARGS[@]}" up -d --build
echo "Pagepiper running → http://localhost:${WEB_PORT}" echo "Pagepiper running → http://localhost:${WEB_PORT}"
;; ;;
stop) stop)
docker compose -f "$COMPOSE_FILE" $OVERRIDE_FLAG down docker compose -f "$COMPOSE_FILE" "${OVERRIDE_ARGS[@]}" down
;; ;;
restart) restart)
docker compose -f "$COMPOSE_FILE" $OVERRIDE_FLAG down docker compose -f "$COMPOSE_FILE" "${OVERRIDE_ARGS[@]}" down
docker compose -f "$COMPOSE_FILE" $OVERRIDE_FLAG up -d --build docker compose -f "$COMPOSE_FILE" "${OVERRIDE_ARGS[@]}" up -d --build
echo "Pagepiper running → http://localhost:${WEB_PORT}" echo "Pagepiper running → http://localhost:${WEB_PORT}"
;; ;;
status) status)
docker compose -f "$COMPOSE_FILE" $OVERRIDE_FLAG ps docker compose -f "$COMPOSE_FILE" "${OVERRIDE_ARGS[@]}" ps
;; ;;
logs) logs)
docker compose -f "$COMPOSE_FILE" $OVERRIDE_FLAG logs -f "${1:-}" docker compose -f "$COMPOSE_FILE" "${OVERRIDE_ARGS[@]}" logs -f "${1:-}"
;; ;;
open) open)
xdg-open "http://localhost:${WEB_PORT}" 2>/dev/null || open "http://localhost:${WEB_PORT}" xdg-open "http://localhost:${WEB_PORT}" 2>/dev/null || open "http://localhost:${WEB_PORT}"
;; ;;
build) build)
docker compose -f "$COMPOSE_FILE" $OVERRIDE_FLAG build --no-cache docker compose -f "$COMPOSE_FILE" "${OVERRIDE_ARGS[@]}" build --no-cache
;; ;;
test) test)
conda run -n cf pytest tests/ -v conda run -n cf pytest tests/ -v