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