ci: add server build
Some checks failed
Build and release / Build (push) Failing after 2m28s
Build and release / update-release-draft (push) Has been skipped
Build and release / Release (push) Has been skipped

This commit is contained in:
Morten Olsen
2025-12-10 21:52:20 +01:00
parent 0646390d52
commit 25f614a730
28 changed files with 362 additions and 43 deletions

View File

@@ -0,0 +1,32 @@
FROM node:23-slim AS base
ENV \
MODEL_DIR=/models
RUN corepack enable
WORKDIR /app
FROM base AS builder
RUN npm i -g turbo
COPY . .
RUN turbo prune @morten-olsen/stash-server --docker
FROM base AS installer
COPY --from=builder /app/out/json/ .
RUN pnpm install --frozen-lockfile
COPY --from=builder /app/out/full/ .
RUN \
pnpm build \
&& node /app/packages/server/dist/preload-data.js
FROM base AS runner
ENV \
SERVER_HOST=0.0.0.0
RUN \
addgroup --system --gid 1001 nodejs \
&& adduser --system --uid 1001 nodejs \
&& mkdir /data \
&& chown nodejs:nodejs /data
COPY --from=installer /models /models
COPY --from=installer /app /app
USER nodejs
CMD ["node", "/app/packages/server/dist/start.js"]

View File

@@ -27,9 +27,6 @@
},
"name": "@morten-olsen/stash-server",
"version": "1.0.0",
"imports": {
"#root/*": "./src/*"
},
"dependencies": {
"@fastify/cors": "11.1.0",
"@fastify/swagger": "9.6.1",

View File

@@ -0,0 +1,11 @@
import { mkdir } from 'fs/promises';
import { resolve } from 'path';
import { preloadModel, setModelLocation } from '@morten-olsen/stash-runtime';
if (process.env.MODEL_DIR) {
const modelDir = resolve(process.env.MODEL_DIR);
await mkdir(modelDir, { recursive: true });
setModelLocation(modelDir);
await preloadModel();
}

View File

@@ -1,7 +1,19 @@
import { resolve } from 'path';
import { mkdir } from 'fs/promises';
import { setModelLocation } from '@morten-olsen/stash-runtime';
import { createApi } from './api.js';
const server = await createApi();
if (process.env.MODEL_DIR) {
const modelDir = resolve(process.env.MODEL_DIR);
await mkdir(modelDir, { recursive: true });
setModelLocation(modelDir);
}
const server = await createApi();
await server.listen({
port: 3400,
host: process.env.SERVER_HOST,
});
console.log('Server started');