10 Commits
7 changed files with 55 additions and 25 deletions
+5 -2
View File
@@ -92,7 +92,10 @@ builder.Services.AddOpenApi(options =>
});
builder.Services.AddCors(options => options.AddPolicy("AllowFrontend", policy =>
policy.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().AllowCredentials()));
policy.WithOrigins("https://localhost:3000", "https://localhost:8076", "https://console.ifri.khongisa.co.za")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()));
var app = builder.Build();
@@ -106,8 +109,8 @@ app.UseHsts();
app.UseHttpsRedirection();
app.UseRouting();
app.UseOutputCache();
app.UseCors("AllowFrontend");
app.UseOutputCache();
app.UseAuthentication();
app.UseAuthorization();
+17 -12
View File
@@ -3,29 +3,34 @@ FROM node:20-alpine AS builder
WORKDIR /app
# Copy dependency definitions
COPY package*.json ./
# Enable corepack to use Yarn
RUN corepack enable
# Install dependencies
RUN npm ci || npm install
# Copy dependency definitions from the subdirectory
COPY PostFundManagement.ConsoleUI/package*.json PostFundManagement.ConsoleUI/yarn.lock* ./
# Copy application source
COPY . .
# Install dependencies via Yarn
RUN yarn install --frozen-lockfile || yarn install
# Copy application source from the subdirectory
COPY PostFundManagement.ConsoleUI/ ./
# Build Vite application for production
RUN npm run build
RUN yarn build
# Stage 2: Production Nginx Server
FROM nginx:alpine
# Copy nginx configuration
COPY nginx.conf /etc/nginx/conf.d/default.conf
WORKDIR /usr/share/nginx/html
# Copy nginx configuration from stage 1 build directory
COPY --from=builder /app/nginx.conf /etc/nginx/conf.d/default.conf
# Copy compiled static assets from build stage
COPY --from=builder /app/dist /usr/share/nginx/html
COPY --from=builder /app/dist ./
# Copy entrypoint script for dynamic runtime environment variables
COPY docker-entrypoint.sh /docker-entrypoint.sh
COPY --from=builder /app/docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
# Expose port 3000
@@ -33,4 +38,4 @@ EXPOSE 3000
# Set entrypoint and default command
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["nginx", "-g", "daemon off;"]
CMD ["nginx", "-g", "daemon off;"]
@@ -7,13 +7,13 @@ services:
dockerfile: Dockerfile
container_name: pfm-console
ports:
- "3000:3000"
- "8076:3000"
environment:
# OIDC Identity Provider Configuration
- OIDC_AUTHORITY=https://sts.security.khongisa.co.za
- OIDC_AUDIENCE=pfm-api-dev
- OIDC_CLIENT_ID=pfm-scalar-dev
- OIDC_CLIENT_SECRET=secret_71f88570a46eb22eb5270b47f69e3332c84d8db85d008f0276cb7431c8872d27
- OIDC_AUTHORITY=${OIDC_AUTHORITY}
- OIDC_AUDIENCE=${OIDC_AUDIENCE}
- OIDC_CLIENT_ID=${OIDC_CLIENT_ID}
- OIDC_CLIENT_SECRET=${OIDC_CLIENT_SECRET}
# Backend API Configuration
- API_BASE_URL=https://api.ifri.khongisa.co.za/
- API_BASE_URL=${API_BASE_URL}
restart: unless-stopped
@@ -32,6 +32,7 @@
"devDependencies": {
"@types/express": "^4.17.21",
"@types/node": "^22.14.0",
"@vitejs/plugin-basic-ssl": "^2.3.0",
"autoprefixer": "^10.5.6",
"esbuild": "^0.25.0",
"postcss": "^8.5.28",
+3 -4
View File
@@ -1,3 +1,4 @@
import basicSsl from '@vitejs/plugin-basic-ssl';
import tailwindcss from '@tailwindcss/vite';
import react from '@vitejs/plugin-react';
import path from 'path';
@@ -5,7 +6,7 @@ import { defineConfig } from 'vite';
export default defineConfig(() => {
return {
plugins: [react(), tailwindcss()],
plugins: [react(), tailwindcss(), basicSsl()],
resolve: {
alias: {
'@': path.resolve(__dirname, '.'),
@@ -13,10 +14,8 @@ export default defineConfig(() => {
},
server: {
// HMR is disabled in AI Studio via DISABLE_HMR env var.
// Do not modify—file watching is disabled to prevent flickering during agent edits.
hmr: process.env.DISABLE_HMR !== 'true',
// Disable file watching when DISABLE_HMR is true to save CPU during agent edits.
watch: process.env.DISABLE_HMR === 'true' ? null : {},
},
};
});
});
+5
View File
@@ -942,6 +942,11 @@
"@types/node" "*"
"@types/send" "<1"
"@vitejs/plugin-basic-ssl@^2.3.0":
version "2.3.0"
resolved "https://registry.yarnpkg.com/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.3.0.tgz#f505b1c197d8cb4fd6e213a78847574ecc51e2f9"
integrity sha512-bdyo8rB3NnQbikdMpHaML9Z1OZPBu6fFOBo+OtxsBlvMJtysWskmBcnbIDhUqgC8tcxNv/a+BcV5U+2nQMm1OQ==
"@vitejs/plugin-react@^5.0.4":
version "5.2.0"
resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-5.2.0.tgz#108bd0f566f288ce3566982df4eff137ded7b15f"
+18 -1
View File
@@ -66,4 +66,21 @@ services:
- Email__SmtpPort=${EMAIL_SMTP_PORT:-587}
# Redis overrides
- ConnectionStrings__Redis=${REDIS_CONNECTION_STRING:-192.168.1.171:6379,ssl=false,abortConnect=false}
- ConnectionStrings__Redis=${REDIS_CONNECTION_STRING:-192.168.1.171:6379,ssl=false,abortConnect=false}
pfm-console:
image: pfm-console
build:
context: .
dockerfile: PostFundManagement.ConsoleUI/Dockerfile
container_name: pfm-console
ports:
- "8076:3000"
environment:
# OIDC Identity Provider Configuration
- OIDC_AUTHORITY=${OIDC_AUTHORITY:-https://}
- OIDC_AUDIENCE=${OIDC_AUDIENCE:-aud}
- OIDC_CLIENT_ID=${OIDC_CLIENT_ID:-clientid}
- OIDC_CLIENT_SECRET=${OIDC_CLIENT_SECRET:-yoursecret}
# Backend API Configuration
- API_BASE_URL=${API_BASE_URL:-https://api.ifri.khongisa.co.za/}
restart: unless-stopped