From 8da6ccdc7cbcb50f9689af5772f3e97c79e37167 Mon Sep 17 00:00:00 2001 From: Matt Strickler Date: Tue, 4 Feb 2025 18:28:46 -0500 Subject: [PATCH] Add web interface to build --- Dockerfile | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7bfc3dac..a839b5af 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,21 +6,38 @@ FROM base AS build WORKDIR /app COPY . /app -RUN corepack enable +RUN corepack enable && pnpm add -g serve RUN apk add --no-cache python3 alpine-sdk +# Build backend (cobalt-api) +FROM build AS build-api +WORKDIR /app RUN --mount=type=cache,id=pnpm,target=/pnpm/store \ pnpm install --prod --frozen-lockfile - RUN pnpm deploy --filter=@imput/cobalt-api --prod /prod/api -FROM base AS api +# Build frontend (cobalt-web) +FROM build AS build-web +WORKDIR /app/web +RUN --mount=type=cache,id=pnpm-web,target=/pnpm/store \ + pnpm install --prod=false --frozen-lockfile +ARG WEB_HOST +ARG WEB_DEFAULT_API +ENV WEB_HOST=${WEB_HOST} +ENV WEB_DEFAULT_API=${WEB_DEFAULT_API} +RUN pnpm run build + +# Merge api+web results +FROM base AS final WORKDIR /app -COPY --from=build --chown=node:node /prod/api /app -COPY --from=build --chown=node:node /app/.git /app/.git +RUN apk add --no-cache python3 +COPY --from=build-api --chown=node:node /prod/api /app +COPY --from=build-web --chown=node:node /app/web /app/web +COPY .git /app/.git USER node EXPOSE 9000 -CMD [ "node", "src/cobalt" ] +EXPOSE 9001 +CMD [ "sh", "-c", "python3 -m http.server 9001 --directory /app/web/build & node src/cobalt" ] \ No newline at end of file