This commit is contained in:
2026-02-06 12:35:32 +03:00
parent b42a1dfd16
commit af5f80c688
5 changed files with 13 additions and 11 deletions

View File

@ -3,9 +3,12 @@ const nextConfig = {
reactStrictMode: true,
eslint: { ignoreDuringBuilds: true },
transpilePackages: ['@coursecraft/shared'],
// Проксируем /api на бэкенд — в браузере запросы идут на тот же хост, без localhost
// Проксируем /api на бэкенд — в браузере запросы идут на тот же хост
// INTERNAL_API_URL используется в Docker (не конфликтует с .env),
// API_URL — fallback для локальной разработки
async rewrites() {
const apiUrl = process.env.API_URL || 'http://127.0.0.1:3125';
const apiUrl = process.env.INTERNAL_API_URL || process.env.API_URL || 'http://127.0.0.1:3125';
console.log('[next.config] rewrites destination:', apiUrl);
return [{ source: '/api/:path*', destination: `${apiUrl}/api/:path*` }];
},
images: {

View File

@ -1,6 +1,6 @@
// В браузере — относительный URL (запросы на тот же хост, Next проксирует /api на бэкенд)
const API_BASE =
typeof window !== 'undefined' ? '' : (process.env.API_URL || 'http://localhost:3125');
typeof window !== 'undefined' ? '' : (process.env.INTERNAL_API_URL || process.env.API_URL || 'http://localhost:3125');
const API_URL = API_BASE ? `${API_BASE.replace(/\/$/, '')}/api` : '/api';
const STORAGE_KEY = 'coursecraft_api_token';

View File

@ -100,15 +100,14 @@ services:
context: .
dockerfile: docker/Dockerfile.web
args:
API_URL: http://api:3125
INTERNAL_API_URL: http://api:3125
NEXT_PUBLIC_SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL}
NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY}
NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL:-http://localhost:3080}
container_name: coursecraft-web
restart: unless-stopped
# NB: no env_file here — .env contains API_URL=localhost which breaks Docker networking
environment:
API_URL: http://api:3125
INTERNAL_API_URL: http://api:3125
NEXT_PUBLIC_SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL}
NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY}
NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL:-http://localhost:3080}

View File

@ -19,12 +19,13 @@ RUN pnpm install --frozen-lockfile
COPY . .
# These are needed at build time: Next.js inlines NEXT_PUBLIC_* into client bundle
ARG API_URL=http://api:3125
# INTERNAL_API_URL is used for rewrites (avoids conflict with .env's API_URL)
ARG INTERNAL_API_URL=http://api:3125
ARG NEXT_PUBLIC_SUPABASE_URL
ARG NEXT_PUBLIC_SUPABASE_ANON_KEY
ARG NEXT_PUBLIC_APP_URL=http://localhost:3080
ENV API_URL=${API_URL}
ENV INTERNAL_API_URL=${INTERNAL_API_URL}
ENV NEXT_PUBLIC_SUPABASE_URL=${NEXT_PUBLIC_SUPABASE_URL}
ENV NEXT_PUBLIC_SUPABASE_ANON_KEY=${NEXT_PUBLIC_SUPABASE_ANON_KEY}
ENV NEXT_PUBLIC_APP_URL=${NEXT_PUBLIC_APP_URL}

View File

@ -97,15 +97,14 @@ services:
context: ..
dockerfile: docker/Dockerfile.web
args:
API_URL: http://api:3125
INTERNAL_API_URL: http://api:3125
NEXT_PUBLIC_SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL}
NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY}
NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL:-http://localhost:3080}
container_name: coursecraft-web
restart: unless-stopped
# NB: no env_file here — .env contains API_URL=localhost which breaks Docker networking
environment:
API_URL: http://api:3125
INTERNAL_API_URL: http://api:3125
NEXT_PUBLIC_SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL}
NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY}
NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL:-http://localhost:3080}