🌳
pt0/deployF/viteAppF/viteDockerfileAI.mts
10export const genViteBuilderDockerfile = async ({srcDir, monorepoRoot, buildCmd, installCmd, viteBuildEnvH}: {srcDir?: string, monorepoRoot?: string | null, buildCmd?: string, installCmd?: string, viteBuildEnvH?: Record<string, string>}) => {
11 assertDefined(monorepoRoot, {srcDir})
12 const ptSrcDir = absPathToPtPath(srcDir as Parameters<typeof absPathToPtPath>[0])
13 const ptMonorepoRoot = absPathToPtPath(monorepoRoot as Parameters<typeof absPathToPtPath>[0])
15 const builderDf = initDockFile(`FROM ${nodeJsDockerImage()} AS builder`)
16 const {pushLine} = builderDf
18 pushLine(`WORKDIR /app`)
19 pushLine(corepackInstallLine)
21 const envLines = envToDockerLines({VITE_PROJECT_ID: walletConnectProjectId, ...viteBuildEnvH})
23 const tarInfo = await submoduleTarPath({submodulePtPath: ptMonorepoRoot})
24 builderDf.pushCpTar({...tarInfo, dockerPathsA: []} as any)
25 pushLine(`WORKDIR /app/${ptMonorepoRoot}`)
26 pushLine(`RUN ${installCmd || 'yarn install'}`)
27 pushLine(envLines)
28 pushLine(`RUN ${buildCmd || 'yarn build'}`)
30 return {builderDf, ptSrcDir}
33export const genViteRunnerDockerfile = ({builderRepoNameTag, ptSrcDir, distDir, svcPortNo}: {builderRepoNameTag: string, ptSrcDir: string, distDir: string, svcPortNo: number}) => {
34 const runnerDf = initDockFile()
35 const {pushLine} = runnerDf
37 const distPath = `/app/${ptSrcDir}/${distDir}`
39 pushLine(`FROM ${builderRepoNameTag} AS buildstage`)
40 pushLine(`FROM ${nodeJsDockerImage()} AS runner`)
41 pushLine(`RUN npm install -g serve`)
42 pushLine(`COPY --from=buildstage ${distPath} /app`)
43 pushLine(`WORKDIR /app`)
44 pushLine(`EXPOSE ${svcPortNo}`)
45 pushLine(`CMD ["serve", "-s", "/app", "-l", "${svcPortNo}"]`)
47 return runnerDf