123
This commit is contained in:
@ -3,9 +3,12 @@ const nextConfig = {
|
|||||||
reactStrictMode: true,
|
reactStrictMode: true,
|
||||||
eslint: { ignoreDuringBuilds: true },
|
eslint: { ignoreDuringBuilds: true },
|
||||||
transpilePackages: ['@coursecraft/shared'],
|
transpilePackages: ['@coursecraft/shared'],
|
||||||
// Проксируем /api на бэкенд — в браузере запросы идут на тот же хост, без localhost
|
// Проксируем /api на бэкенд — в браузере запросы идут на тот же хост
|
||||||
|
// INTERNAL_API_URL используется в Docker (не конфликтует с .env),
|
||||||
|
// API_URL — fallback для локальной разработки
|
||||||
async rewrites() {
|
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*` }];
|
return [{ source: '/api/:path*', destination: `${apiUrl}/api/:path*` }];
|
||||||
},
|
},
|
||||||
images: {
|
images: {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
// В браузере — относительный URL (запросы на тот же хост, Next проксирует /api на бэкенд)
|
// В браузере — относительный URL (запросы на тот же хост, Next проксирует /api на бэкенд)
|
||||||
const API_BASE =
|
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 API_URL = API_BASE ? `${API_BASE.replace(/\/$/, '')}/api` : '/api';
|
||||||
|
|
||||||
const STORAGE_KEY = 'coursecraft_api_token';
|
const STORAGE_KEY = 'coursecraft_api_token';
|
||||||
|
|||||||
@ -100,15 +100,14 @@ services:
|
|||||||
context: .
|
context: .
|
||||||
dockerfile: docker/Dockerfile.web
|
dockerfile: docker/Dockerfile.web
|
||||||
args:
|
args:
|
||||||
API_URL: http://api:3125
|
INTERNAL_API_URL: http://api:3125
|
||||||
NEXT_PUBLIC_SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL}
|
NEXT_PUBLIC_SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL}
|
||||||
NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY}
|
NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY}
|
||||||
NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL:-http://localhost:3080}
|
NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL:-http://localhost:3080}
|
||||||
container_name: coursecraft-web
|
container_name: coursecraft-web
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
# NB: no env_file here — .env contains API_URL=localhost which breaks Docker networking
|
|
||||||
environment:
|
environment:
|
||||||
API_URL: http://api:3125
|
INTERNAL_API_URL: http://api:3125
|
||||||
NEXT_PUBLIC_SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL}
|
NEXT_PUBLIC_SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL}
|
||||||
NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY}
|
NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY}
|
||||||
NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL:-http://localhost:3080}
|
NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL:-http://localhost:3080}
|
||||||
|
|||||||
@ -19,12 +19,13 @@ RUN pnpm install --frozen-lockfile
|
|||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
# These are needed at build time: Next.js inlines NEXT_PUBLIC_* into client bundle
|
# 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_URL
|
||||||
ARG NEXT_PUBLIC_SUPABASE_ANON_KEY
|
ARG NEXT_PUBLIC_SUPABASE_ANON_KEY
|
||||||
ARG NEXT_PUBLIC_APP_URL=http://localhost:3080
|
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_URL=${NEXT_PUBLIC_SUPABASE_URL}
|
||||||
ENV NEXT_PUBLIC_SUPABASE_ANON_KEY=${NEXT_PUBLIC_SUPABASE_ANON_KEY}
|
ENV NEXT_PUBLIC_SUPABASE_ANON_KEY=${NEXT_PUBLIC_SUPABASE_ANON_KEY}
|
||||||
ENV NEXT_PUBLIC_APP_URL=${NEXT_PUBLIC_APP_URL}
|
ENV NEXT_PUBLIC_APP_URL=${NEXT_PUBLIC_APP_URL}
|
||||||
|
|||||||
@ -97,15 +97,14 @@ services:
|
|||||||
context: ..
|
context: ..
|
||||||
dockerfile: docker/Dockerfile.web
|
dockerfile: docker/Dockerfile.web
|
||||||
args:
|
args:
|
||||||
API_URL: http://api:3125
|
INTERNAL_API_URL: http://api:3125
|
||||||
NEXT_PUBLIC_SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL}
|
NEXT_PUBLIC_SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL}
|
||||||
NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY}
|
NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY}
|
||||||
NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL:-http://localhost:3080}
|
NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL:-http://localhost:3080}
|
||||||
container_name: coursecraft-web
|
container_name: coursecraft-web
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
# NB: no env_file here — .env contains API_URL=localhost which breaks Docker networking
|
|
||||||
environment:
|
environment:
|
||||||
API_URL: http://api:3125
|
INTERNAL_API_URL: http://api:3125
|
||||||
NEXT_PUBLIC_SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL}
|
NEXT_PUBLIC_SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL}
|
||||||
NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY}
|
NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY}
|
||||||
NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL:-http://localhost:3080}
|
NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL:-http://localhost:3080}
|
||||||
|
|||||||
Reference in New Issue
Block a user