Fix frontend unable to load weather data by using relative API URL
NEXT_PUBLIC_API_URL was only set at runtime via k8s ConfigMap, but Next.js inlines NEXT_PUBLIC_* vars at build time. The fallback localhost:8080 URL was baked into the JS bundle, causing all browser requests to fail. Changed default to relative /api/v1 which routes correctly through the Ingress. Also updates Dockerfile ENV syntax and k8s frontend port to 8080. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -13,8 +13,8 @@ COPY --from=deps /app/node_modules ./node_modules
|
||||
COPY . .
|
||||
|
||||
# Set production environment
|
||||
ENV NEXT_TELEMETRY_DISABLED 1
|
||||
ENV NODE_ENV production
|
||||
ENV NEXT_TELEMETRY_DISABLED=1
|
||||
ENV NODE_ENV=production
|
||||
|
||||
RUN npm run build
|
||||
|
||||
@@ -22,8 +22,8 @@ RUN npm run build
|
||||
FROM node:20-alpine AS runner
|
||||
WORKDIR /app
|
||||
|
||||
ENV NODE_ENV production
|
||||
ENV NEXT_TELEMETRY_DISABLED 1
|
||||
ENV NODE_ENV=production
|
||||
ENV NEXT_TELEMETRY_DISABLED=1
|
||||
|
||||
RUN addgroup --system --gid 1001 nodejs
|
||||
RUN adduser --system --uid 1001 nextjs
|
||||
@@ -42,8 +42,8 @@ USER nextjs
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
ENV PORT 3000
|
||||
ENV HOSTNAME "0.0.0.0"
|
||||
ENV PORT=3000
|
||||
ENV HOSTNAME="0.0.0.0"
|
||||
|
||||
CMD ["node", "server.js"]
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import {
|
||||
APIError,
|
||||
} from './types'
|
||||
|
||||
const API_BASE_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:8080/api/v1'
|
||||
const API_BASE_URL = process.env.NEXT_PUBLIC_API_URL || '/api/v1'
|
||||
|
||||
class APIClient {
|
||||
private baseURL: string
|
||||
|
||||
0
frontend/public/.gitkeep
Normal file
0
frontend/public/.gitkeep
Normal file
36
k8s.yaml
36
k8s.yaml
@@ -4,6 +4,30 @@ kind: Namespace
|
||||
metadata:
|
||||
name: paragliding
|
||||
|
||||
---
|
||||
# External PostgreSQL Service (points to host database)
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: postgres-service
|
||||
namespace: paragliding
|
||||
spec:
|
||||
ports:
|
||||
- port: 5432
|
||||
targetPort: 5432
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Endpoints
|
||||
metadata:
|
||||
name: postgres-service
|
||||
namespace: paragliding
|
||||
subsets:
|
||||
- addresses:
|
||||
- ip: 192.168.1.93
|
||||
ports:
|
||||
- port: 5432
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
@@ -106,7 +130,7 @@ spec:
|
||||
image: harbor.scottyah.com/scottyah/paragliding-web:latest
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 3000
|
||||
- containerPort: 8080
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: paragliding-config
|
||||
@@ -120,13 +144,13 @@ spec:
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: 3000
|
||||
port: 8080
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 30
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: 3000
|
||||
port: 8080
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 10
|
||||
imagePullSecrets:
|
||||
@@ -140,8 +164,8 @@ metadata:
|
||||
namespace: paragliding
|
||||
spec:
|
||||
ports:
|
||||
- port: 3000
|
||||
targetPort: 3000
|
||||
- port: 8080
|
||||
targetPort: 8080
|
||||
protocol: TCP
|
||||
selector:
|
||||
app: paragliding-web
|
||||
@@ -179,4 +203,4 @@ spec:
|
||||
service:
|
||||
name: paragliding-web-svc
|
||||
port:
|
||||
number: 3000
|
||||
number: 8080
|
||||
|
||||
Reference in New Issue
Block a user