fix(tradein): HOSTNAME=0.0.0.0 + NEXT_PUBLIC_API_BASE_URL build-arg #376
3 changed files with 17 additions and 6 deletions
|
|
@ -98,6 +98,7 @@ jobs:
|
|||
# basePath=/trade-in baked-in во время build (Next.js)
|
||||
build-args: |
|
||||
NEXT_PUBLIC_BASE_PATH=/trade-in
|
||||
NEXT_PUBLIC_API_BASE_URL=/trade-in
|
||||
cache-from: type=registry,ref=${{ env.IMAGE_FRONTEND }}:buildcache
|
||||
cache-to: type=registry,ref=${{ env.IMAGE_FRONTEND }}:buildcache,mode=max
|
||||
tags: |
|
||||
|
|
|
|||
|
|
@ -54,9 +54,11 @@ services:
|
|||
container_name: tradein-frontend
|
||||
environment:
|
||||
NODE_ENV: production
|
||||
# Frontend сам префиксит /trade-in (basePath), а fetch к API делает
|
||||
# на /trade-in/api/v1/... (см. NEXT_PUBLIC_API_BASE_URL=/trade-in)
|
||||
NEXT_PUBLIC_API_BASE_URL: ""
|
||||
# Next.js standalone server.js читает HOSTNAME для bind-адреса.
|
||||
# Docker по умолчанию ставит HOSTNAME=<container-id> → сервер слушает
|
||||
# только свой hostname-интерфейс и недоступен как tradein-frontend:3000.
|
||||
# Принудительно 0.0.0.0 чтобы Caddy достучался.
|
||||
HOSTNAME: "0.0.0.0"
|
||||
BACKEND_URL: "http://backend:8000" # internal SSR
|
||||
depends_on: [backend]
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -14,11 +14,15 @@ FROM node:20-alpine AS builder
|
|||
WORKDIR /app
|
||||
ENV NEXT_TELEMETRY_DISABLED=1
|
||||
|
||||
# basePath baked-in во время build (Next.js не может изменить runtime).
|
||||
# В CI workflow: --build-arg NEXT_PUBLIC_BASE_PATH=/trade-in (для prod);
|
||||
# в локальном dev: пусто = no-op.
|
||||
# basePath + API-prefix baked-in во время build (Next.js — build-time only).
|
||||
# В CI workflow для prod:
|
||||
# --build-arg NEXT_PUBLIC_BASE_PATH=/trade-in
|
||||
# --build-arg NEXT_PUBLIC_API_BASE_URL=/trade-in
|
||||
# В локальном dev: оба пусто = no-op (same-origin).
|
||||
ARG NEXT_PUBLIC_BASE_PATH=""
|
||||
ENV NEXT_PUBLIC_BASE_PATH=$NEXT_PUBLIC_BASE_PATH
|
||||
ARG NEXT_PUBLIC_API_BASE_URL=""
|
||||
ENV NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL
|
||||
|
||||
COPY --from=deps /app/node_modules ./node_modules
|
||||
COPY . .
|
||||
|
|
@ -28,8 +32,12 @@ RUN npm run build
|
|||
# ---- runner ----
|
||||
FROM node:20-alpine AS runner
|
||||
WORKDIR /app
|
||||
# HOSTNAME=0.0.0.0 — Next.js standalone server.js биндится по этому env.
|
||||
# Без него Docker ставит HOSTNAME=<container-id> и сервер недоступен по
|
||||
# имени сервиса из других контейнеров (Caddy → 502).
|
||||
ENV NODE_ENV=production \
|
||||
NEXT_TELEMETRY_DISABLED=1 \
|
||||
HOSTNAME=0.0.0.0 \
|
||||
PORT=3000
|
||||
|
||||
COPY --from=builder --chown=node:node /app/public ./public
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue