# server/Dockerfile — backend (Express + ws + better-sqlite3) FROM node:18-alpine AS build WORKDIR /app # workspaces root needed: shared/ is a dependency (@ttrpg/shared) COPY package*.json ./ COPY shared/package.json ./shared/ COPY server/package.json ./server/ RUN npm install --workspaces --include-workspace-root COPY shared/ ./shared/ COPY server/ ./server/ # better-sqlite3 builds native; rebuild for alpine musl RUN cd server && npm rebuild better-sqlite3 ENV NODE_ENV=production ENV PORT=4001 ENV DB_PATH=/data/tracker.sqlite EXPOSE 4001 WORKDIR /app/server CMD ["node", "index.js"]