🗑️ Remove SPA builder from dockerfile

This commit is contained in:
2025-09-19 00:17:22 +08:00
parent 634958ffc5
commit 2ace444dbb
16 changed files with 174 additions and 846 deletions

View File

@@ -3,6 +3,8 @@ WORKDIR /app
EXPOSE 8080
EXPOSE 8081
# Stage 1: Install runtime dependencies
# Install only necessary dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
libfontconfig1 \
@@ -17,24 +19,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
USER $APP_UID
# Stage 2: Build SPA
FROM node:22-alpine AS spa-builder
WORKDIR /src
# Copy package files for SPA
COPY ["DysonNetwork.Drive/Client/package.json", "DysonNetwork.Drive/Client/package-lock.json*", "./Client/"]
# Install SPA dependencies
WORKDIR /src/Client
RUN npm install
# Copy SPA source
COPY ["DysonNetwork.Drive/Client/", "./"]
# Build SPA
RUN npm run build
# Stage 3: Build .NET application
# Stage 2: Build .NET application
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
@@ -42,9 +27,6 @@ COPY ["DysonNetwork.Drive/DysonNetwork.Drive.csproj", "DysonNetwork.Drive/"]
RUN dotnet restore "DysonNetwork.Drive/DysonNetwork.Drive.csproj"
COPY . .
# Copy built SPA to wwwroot
COPY --from=spa-builder /src/Client/dist /src/DysonNetwork.Drive/wwwroot/dist
WORKDIR "/src/DysonNetwork.Drive"
RUN dotnet build "./DysonNetwork.Drive.csproj" -c $BUILD_CONFIGURATION -o /app/build \
-p:TypeScriptCompileBlocked=true \

View File

@@ -77,5 +77,40 @@
<_ContentIncludedByDefault Remove="Pages\Emails\LandingEmail.razor" />
<_ContentIncludedByDefault Remove="Pages\Emails\PasswordResetEmail.razor" />
<_ContentIncludedByDefault Remove="Pages\Emails\VerificationEmail.razor" />
<_ContentIncludedByDefault Remove="wwwroot\assets\index.css" />
<_ContentIncludedByDefault Remove="wwwroot\assets\index.js" />
<_ContentIncludedByDefault Remove="wwwroot\assets\nunito-cyrillic-ext-wght-normal.woff2" />
<_ContentIncludedByDefault Remove="wwwroot\assets\nunito-cyrillic-wght-normal.woff2" />
<_ContentIncludedByDefault Remove="wwwroot\assets\nunito-latin-ext-wght-normal.woff2" />
<_ContentIncludedByDefault Remove="wwwroot\assets\nunito-latin-wght-normal.woff2" />
<_ContentIncludedByDefault Remove="wwwroot\assets\nunito-vietnamese-wght-normal.woff2" />
<_ContentIncludedByDefault Remove="wwwroot\assets\views.css" />
<_ContentIncludedByDefault Remove="wwwroot\assets\views.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\dashboard-CKyaQQmB.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\FilePoolSelect-D8ZAn71O.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\files-2Q0pwjx0.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\files-CHYcO-Km.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\format-C50AaNwU.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\get-slot-BHg77tAu.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\index-8hxmE58t.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\index-C_waKLDa.css" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\not-found-BdXg6kdA.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\nunito-cyrillic-ext-wght-normal-D4X5GqEv.woff2" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\nunito-cyrillic-wght-normal-FdJpG9jw.woff2" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\nunito-latin-ext-wght-normal-ClTydo4B.woff2" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\nunito-latin-wght-normal-DYSs2pW_.woff2" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\nunito-vietnamese-wght-normal-U01xdrZh.woff2" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Progress-B8ihGGrN.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Result-DgdY1Zai.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Spin-D4Bv4qt0.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\src-CwPqR5Jy.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Tooltip-DobXE5MY.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\usage-BWFxWi2s.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\usage-DX5JiEks.css" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\use-locale-8xpNnStl.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\views-DAvwxRhD.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\favicon.png" />
<_ContentIncludedByDefault Remove="wwwroot\dist\index.html" />
<_ContentIncludedByDefault Remove="wwwroot\index.html" />
</ItemGroup>
</Project>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@

View File

@@ -1,87 +0,0 @@
import{A as e,B as t,C as n,D as r,E as i,F as a,G as o,b as s,c,d as l,e as u,f as d,g as f,h as p,i as m,j as h,k as g,l as _,m as v,n as y,o as b,p as x,q as S,r as C,s as w,t as T,u as E,v as D,w as O,x as k,y as A,z as j}from"./index.js";function M(e){return Object.keys(e)}var N=S([T(`card`,`
font-size: var(--n-font-size);
line-height: var(--n-line-height);
display: flex;
flex-direction: column;
width: 100%;
box-sizing: border-box;
position: relative;
border-radius: var(--n-border-radius);
background-color: var(--n-color);
color: var(--n-text-color);
word-break: break-word;
transition:
color .3s var(--n-bezier),
background-color .3s var(--n-bezier),
box-shadow .3s var(--n-bezier),
border-color .3s var(--n-bezier);
`,[v({background:`var(--n-color-modal)`}),C(`hoverable`,[S(`&:hover`,`box-shadow: var(--n-box-shadow);`)]),C(`content-segmented`,[S(`>`,[x(`content`,{paddingTop:`var(--n-padding-bottom)`})])]),C(`content-soft-segmented`,[S(`>`,[x(`content`,`
margin: 0 var(--n-padding-left);
padding: var(--n-padding-bottom) 0;
`)])]),C(`footer-segmented`,[S(`>`,[x(`footer`,{paddingTop:`var(--n-padding-bottom)`})])]),C(`footer-soft-segmented`,[S(`>`,[x(`footer`,`
padding: var(--n-padding-bottom) 0;
margin: 0 var(--n-padding-left);
`)])]),S(`>`,[T(`card-header`,`
box-sizing: border-box;
display: flex;
align-items: center;
font-size: var(--n-title-font-size);
padding:
var(--n-padding-top)
var(--n-padding-left)
var(--n-padding-bottom)
var(--n-padding-left);
`,[x(`main`,`
font-weight: var(--n-title-font-weight);
transition: color .3s var(--n-bezier);
flex: 1;
min-width: 0;
color: var(--n-title-text-color);
`),x(`extra`,`
display: flex;
align-items: center;
font-size: var(--n-font-size);
font-weight: 400;
transition: color .3s var(--n-bezier);
color: var(--n-text-color);
`),x(`close`,`
margin: 0 0 0 8px;
transition:
background-color .3s var(--n-bezier),
color .3s var(--n-bezier);
`)]),x(`action`,`
box-sizing: border-box;
transition:
background-color .3s var(--n-bezier),
border-color .3s var(--n-bezier);
background-clip: padding-box;
background-color: var(--n-action-color);
`),x(`content`,`flex: 1; min-width: 0;`),x(`content, footer`,`
box-sizing: border-box;
padding: 0 var(--n-padding-left) var(--n-padding-bottom) var(--n-padding-left);
font-size: var(--n-font-size);
`,[S(`&:first-child`,{paddingTop:`var(--n-padding-bottom)`})]),x(`action`,`
background-color: var(--n-action-color);
padding: var(--n-padding-bottom) var(--n-padding-left);
border-bottom-left-radius: var(--n-border-radius);
border-bottom-right-radius: var(--n-border-radius);
`)]),T(`card-cover`,`
overflow: hidden;
width: 100%;
border-radius: var(--n-border-radius) var(--n-border-radius) 0 0;
`,[S(`img`,`
display: block;
width: 100%;
`)]),C(`bordered`,`
border: 1px solid var(--n-border-color);
`,[S(`&:target`,`border-color: var(--n-color-target);`)]),C(`action-segmented`,[S(`>`,[x(`action`,[S(`&:not(:first-child)`,{borderTop:`1px solid var(--n-border-color)`})])])]),C(`content-segmented, content-soft-segmented`,[S(`>`,[x(`content`,{transition:`border-color 0.3s var(--n-bezier)`},[S(`&:not(:first-child)`,{borderTop:`1px solid var(--n-border-color)`})])])]),C(`footer-segmented, footer-soft-segmented`,[S(`>`,[x(`footer`,{transition:`border-color 0.3s var(--n-bezier)`},[S(`&:not(:first-child)`,{borderTop:`1px solid var(--n-border-color)`})])])]),C(`embedded`,`
background-color: var(--n-color-embedded);
`)]),b(T(`card`,`
background: var(--n-color-modal);
`,[C(`embedded`,`
background-color: var(--n-color-embedded-modal);
`)])),y(T(`card`,`
background: var(--n-color-popover);
`,[C(`embedded`,`
background-color: var(--n-color-embedded-popover);
`)]))]);const P={title:[String,Function],contentClass:String,contentStyle:[Object,String],headerClass:String,headerStyle:[Object,String],headerExtraClass:String,headerExtraStyle:[Object,String],footerClass:String,footerStyle:[Object,String],embedded:Boolean,segmented:{type:[Boolean,Object],default:!1},size:{type:String,default:`medium`},bordered:{type:Boolean,default:!0},closable:Boolean,hoverable:Boolean,role:String,onClose:[Function,Array],tag:{type:String,default:`div`},cover:Function,content:[String,Function],footer:Function,action:Function,headerExtra:Function},F=M(P),I=Object.assign(Object.assign({},u.props),P);var L=A({name:`Card`,props:I,slots:Object,setup(e){let t=()=>{let{onClose:t}=e;t&&g(t)},{inlineThemeDisabled:n,mergedClsPrefixRef:r,mergedRtlRef:i}=p(e),a=u(`Card`,`-card`,N,c,e,r),o=d(`Card`,i,r),s=O(()=>{let{size:t}=e,{self:{color:n,colorModal:r,colorTarget:i,textColor:o,titleTextColor:s,titleFontWeight:c,borderColor:l,actionColor:u,borderRadius:d,lineHeight:f,closeIconColor:p,closeIconColorHover:m,closeIconColorPressed:h,closeColorHover:g,closeColorPressed:v,closeBorderRadius:y,closeIconSize:b,closeSize:x,boxShadow:S,colorPopover:C,colorEmbedded:T,colorEmbeddedModal:E,colorEmbeddedPopover:D,[w(`padding`,t)]:O,[w(`fontSize`,t)]:k,[w(`titleFontSize`,t)]:A},common:{cubicBezierEaseInOut:j}}=a.value,{top:M,left:N,bottom:P}=_(O);return{"--n-bezier":j,"--n-border-radius":d,"--n-color":n,"--n-color-modal":r,"--n-color-popover":C,"--n-color-embedded":T,"--n-color-embedded-modal":E,"--n-color-embedded-popover":D,"--n-color-target":i,"--n-text-color":o,"--n-line-height":f,"--n-action-color":u,"--n-title-text-color":s,"--n-title-font-weight":c,"--n-close-icon-color":p,"--n-close-icon-color-hover":m,"--n-close-icon-color-pressed":h,"--n-close-color-hover":g,"--n-close-color-pressed":v,"--n-border-color":l,"--n-box-shadow":S,"--n-padding-top":M,"--n-padding-bottom":P,"--n-padding-left":N,"--n-font-size":k,"--n-title-font-size":A,"--n-close-size":x,"--n-close-icon-size":b,"--n-close-border-radius":y}}),l=n?f(`card`,O(()=>e.size[0]),s,e):void 0;return{rtlEnabled:o,mergedClsPrefix:r,mergedTheme:a,handleCloseClick:t,cssVars:n?void 0:s,themeClass:l?.themeClass,onRender:l?.onRender}},render(){let{segmented:e,bordered:t,hoverable:n,mergedClsPrefix:r,rtlEnabled:i,onRender:a,embedded:o,tag:s,$slots:c}=this;return a?.(),j(s,{class:[`${r}-card`,this.themeClass,o&&`${r}-card--embedded`,{[`${r}-card--rtl`]:i,[`${r}-card--content${typeof e!=`boolean`&&e.content===`soft`?`-soft`:``}-segmented`]:e===!0||e!==!1&&e.content,[`${r}-card--footer${typeof e!=`boolean`&&e.footer===`soft`?`-soft`:``}-segmented`]:e===!0||e!==!1&&e.footer,[`${r}-card--action-segmented`]:e===!0||e!==!1&&e.action,[`${r}-card--bordered`]:t,[`${r}-card--hoverable`]:n}],style:this.cssVars,role:this.role},h(c.cover,e=>{let t=this.cover?m([this.cover()]):e;return t&&j(`div`,{class:`${r}-card-cover`,role:`none`},t)}),h(c.header,e=>{let{title:t}=this,n=t?m(typeof t==`function`?[t()]:[t]):e;return n||this.closable?j(`div`,{class:[`${r}-card-header`,this.headerClass],style:this.headerStyle,role:`heading`},j(`div`,{class:`${r}-card-header__main`,role:`heading`},n),h(c[`header-extra`],e=>{let t=this.headerExtra?m([this.headerExtra()]):e;return t&&j(`div`,{class:[`${r}-card-header__extra`,this.headerExtraClass],style:this.headerExtraStyle},t)}),this.closable&&j(l,{clsPrefix:r,class:`${r}-card-header__close`,onClick:this.handleCloseClick,absolute:!0})):null}),h(c.default,e=>{let{content:t}=this,n=t?m(typeof t==`function`?[t()]:[t]):e;return n&&j(`div`,{class:[`${r}-card__content`,this.contentClass],style:this.contentStyle,role:`none`},n)}),h(c.footer,e=>{let t=this.footer?m([this.footer()]):e;return t&&j(`div`,{class:[`${r}-card__footer`,this.footerClass],style:this.footerStyle,role:`none`},t)}),h(c.action,e=>{let t=this.action?m([this.action()]):e;return t&&j(`div`,{class:`${r}-card__action`,role:`none`},t)}))}});const R={class:`h-full relative flex items-center justify-center`},z={class:`mt-4 opacity-75 text-xs`},B={key:0},V={key:1};var H=A({__name:`index`,setup(s){let c=i(null);async function l(){let e=await fetch(`/api/version`);c.value=await e.json()}return r(()=>l()),(r,i)=>(E(),n(`section`,R,[k(a(L),{class:`max-w-lg`,title:`About`},{default:t(()=>[i[0]||=D(`p`,null,[e(`Welcome to the `),D(`b`,null,`Solar Drive`)],-1),i[1]||=D(`p`,null,` We help you upload, collect, and share files with ease in mind. `,-1),D(`p`,z,[c.value==null?(E(),n(`span`,B,`Loading...`)):(E(),n(`span`,V,` v`+o(c.value.version)+` @ `+o(c.value.commit.substring(0,6))+` `+o(c.value.updatedAt),1))])]),_:1,__:[0,1]})]))}}),U=s(H,[[`__scopeId`,`data-v-55d8ffbb`]]);export{U as default};

View File

@@ -1,15 +0,0 @@
<!doctype html>
<html lang="">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Solarpass</title>
<app-data />
<script type="module" crossorigin src="/assets/index.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index.css">
</head>
<body>
<div id="app"></div>
</body>
</html>

View File

@@ -5,24 +5,7 @@ WORKDIR /app
EXPOSE 8080
EXPOSE 8081
# Stage 2: Build SPA
FROM node:22-alpine AS spa-builder
WORKDIR /src
# Copy package files for SPA
COPY ["DysonNetwork.Pass/Client/package.json", "DysonNetwork.Pass/Client/package-lock.json*", "./Client/"]
# Install SPA dependencies
WORKDIR /src/Client
RUN npm install
# Copy SPA source
COPY ["DysonNetwork.Pass/Client/", "./"]
# Build SPA
RUN npm run build
# Stage 3: Build .NET application
# Stage 2: Build .NET application
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
WORKDIR /src
@@ -33,9 +16,6 @@ RUN dotnet restore "DysonNetwork.Pass/DysonNetwork.Pass.csproj"
# Copy everything else and build
COPY . .
# Copy built SPA to wwwroot
COPY --from=spa-builder /src/Client/dist /src/DysonNetwork.Pass/wwwroot/dist
# Build the application
WORKDIR "/src/DysonNetwork.Pass"
RUN dotnet build "DysonNetwork.Pass.csproj" -c Release -o /app/build \

View File

@@ -136,4 +136,125 @@
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Alert-B2FSluOY.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Alert-BpKMqwss.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Alert-DTmb0Sgw.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Alert-DvM2xVbN.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\authorize-CDn2N2LM.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\authorize-CJXnHQxd.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\authorize-DHV7-8aO.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\authorize-dZl8sZky.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\authorize-x1XGuNl0.css" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Avatar-7bBXFYqd.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Avatar-DdpbxvYb.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Avatar-D_MBNIdG.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Avatar-FENaVzle.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\callback-4ABh1E9L.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\callback-BHdDa1RS.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\callback-D2gvcEWR.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\callback-TDa4jiA8.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\captcha-CHZUVdIk.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\captcha-D6UBfe8X.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\captcha-D9uzIi-C.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\captcha-DMR3K84c.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\captcha-TlMcxElg.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\CaptchaWidget-D5wD484e.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\CaptchaWidget-LqHDF0Bm.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\CaptchaWidget-nxAiuR8D.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\CaptchaWidget-xnhVxegn.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\CaptchaWidget-ZSSy1_MS.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Card-3CQ5hMIi.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Card-Bm8UR8wa.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Card-C4ZOuQYu.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Card-CeVymCuR.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Card-K5sJ0ti3.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\create-account-B6oUnTd5.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\create-account-CDr1rVfd.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\create-account-CxHpnOvK.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\create-account-EYf4P7T4.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\create-account-POd1mcUx.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\dashboard-C98Tn6-T.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\dashboard-DcZO2zWP.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\dashboard-Ddypammg.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\dashboard-E1FjEONz.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\dashboard-LoQB59cJ.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\index-964Yi0CV.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\index-ByqfQbbl.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\index-CFzrSPET.css" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\index-CKh4vLBr.css" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\index-DiRbRnS4.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\index-DV0K-h1x.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\index-e5_uYufX.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\index-OlazpMBG.css" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\info-BKcw8i0E.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\info-BWGGQKrM.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\info-CN2zvAgZ.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\info-DGp6o6bD.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\info-xQN_26a3.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Input-BStZQD4K.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Input-CZ7NsVfI.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Input-DPeldKtL.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Input-DXl3pOsk.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Input-m7BFdUHn.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\login-BeTGF59B.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\login-BfW3KWcS.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\login-Bn1Vi--K.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\login-BNk-r3QN.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\login-CuUht49V.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\not-found-BMgVDi16.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\not-found-BnHh8CK1.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\not-found-C7gS4N7g.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\not-found-jW5pncwI.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\not-found-sjl1-FUZ.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\nunito-cyrillic-ext-wght-normal-D4X5GqEv.woff2" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\nunito-cyrillic-wght-normal-FdJpG9jw.woff2" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\nunito-latin-ext-wght-normal-ClTydo4B.woff2" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\nunito-latin-wght-normal-DYSs2pW_.woff2" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\nunito-vietnamese-wght-normal-U01xdrZh.woff2" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\PersonRound-8S_mNAfZ.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\PersonRound-Bjvi_zVT.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\PersonRound-BX1iEtQl.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\PersonRound-CdcTMOpz.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\PersonRound-DgsR1USR.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\pfp-CjBu767l.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\pfp-CJGYtIrG.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\pfp-CQwKndsp.css" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\pfp-DlYGqw_1.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\pfp-hprSFU-u.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\pfp-WGjM2YVF.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Progress-BYkKGqxH.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Progress-Bz_alL0z.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Progress-C5JK2b-M.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Progress-Cq5Zdlxp.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Progress-I7OzLFHE.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Result-B64HNhI4.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Result-BKspndtr.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Result-DGJsK6kO.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Result-DWv3YAoa.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Result-wfz_zGlO.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\security-BPT8r8gR.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\security-BV0Kq4kg.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\security-CLO6F1QL.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\security-DSsaIooW.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\security-MhaVgRfO.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\spells-BAzEXQVO.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\spells-BkDaJJbe.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\spells-DFn1Mbcq.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\spells-DsoUguHQ.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\spells-uY5sY7b0.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Spin-BSOdyDlg.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Spin-CcHBrPmI.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Spin-DiPKacGY.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Spin-DWv_86Hk.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\Spin-n8pBfAvT.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\views-B5pO0Mty.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\views-BfxnUiQS.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\views-Clwfkju7.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\views-FC75oa3I.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\views-WkErGpGZ.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\favicon.png" />
<_ContentIncludedByDefault Remove="wwwroot\dist\index.html" />
</ItemGroup>
</Project>

View File

@@ -5,24 +5,7 @@ WORKDIR /app
EXPOSE 8080
EXPOSE 8081
# Stage 2: Build SPA
FROM node:22-alpine AS spa-builder
WORKDIR /src
# Copy package files for SPA
COPY ["DysonNetwork.Sphere/Client/package.json", "DysonNetwork.Sphere/Client/package-lock.json*", "./Client/"]
# Install SPA dependencies
WORKDIR /src/Client
RUN npm install
# Copy SPA source
COPY ["DysonNetwork.Sphere/Client/", "./"]
# Build SPA
RUN npm run build
# Stage 3: Build .NET application
# Stage 2: Build .NET application
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
@@ -38,12 +21,6 @@ RUN dotnet restore "DysonNetwork.Sphere/DysonNetwork.Sphere.csproj"
# Copy everything else and build
COPY . .
# Copy built SPA to wwwroot
COPY --from=spa-builder /src/Client/dist /src/DysonNetwork.Sphere/wwwroot/dist
# Remove Pass project's config files to prevent conflicts
RUN rm -f /src/DysonNetwork.Pass/appsettings*.json /src/DysonNetwork.Pass/version.json
# Create necessary directories for localized resources
RUN mkdir -p /src/DysonNetwork.Sphere/bin/Release/net9.0/zh-hans \
&& mkdir -p /src/DysonNetwork.Pass/bin/Release/net9.0/zh-hans
@@ -58,7 +35,6 @@ RUN dotnet build "DysonNetwork.Sphere.csproj" -c $BUILD_CONFIGURATION -o /app/bu
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
# Ensure the target directory for localized resources exists
RUN rm -rf /src/DysonNetwork.Pass/Client
RUN mkdir -p /app/publish/zh-Hans
RUN dotnet publish "DysonNetwork.Sphere.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false

View File

@@ -150,6 +150,19 @@
<_ContentIncludedByDefault Remove="Pages\Emails\LandingEmail.razor" />
<_ContentIncludedByDefault Remove="Pages\Emails\PasswordResetEmail.razor" />
<_ContentIncludedByDefault Remove="Pages\Emails\VerificationEmail.razor" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\index-CwhYnE7S.css" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\index-D09kXPgc.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\nunito-cyrillic-ext-wght-normal-D4X5GqEv.woff2" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\nunito-cyrillic-wght-normal-FdJpG9jw.woff2" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\nunito-latin-ext-wght-normal-ClTydo4B.woff2" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\nunito-latin-wght-normal-DYSs2pW_.woff2" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\nunito-vietnamese-wght-normal-U01xdrZh.woff2" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\PostItem-B-fBcnNf.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\posts-w-kbiv-Q.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\assets\views-Z9SFj0UP.js" />
<_ContentIncludedByDefault Remove="wwwroot\dist\favicon.png" />
<_ContentIncludedByDefault Remove="wwwroot\dist\image-broken.jpg" />
<_ContentIncludedByDefault Remove="wwwroot\dist\index.html" />
</ItemGroup>
<ItemGroup>