gammanexus/Dockerfile

33 lines
670 B
Docker

FROM node:20-alpine
WORKDIR /app
RUN apk add --no-cache curl tini
# Copy everything
COPY . .
# Install all deps
RUN npm ci
# Build the app (creates dist/public/ for static serving)
RUN npm run build
# Create non-root user for security
RUN addgroup -S appgroup && adduser -S appuser -G appgroup && chown -R appuser:appgroup /app
USER appuser
ENV NODE_ENV=production
ENV PORT=3000
EXPOSE 3000
ENTRYPOINT ["tini", "--"]
HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \
CMD curl -f http://localhost:3000/api/orats/status || exit 1
# Run with tsx so the built server + dist/public/ are available
CMD ["npx", "tsx", "server/index.ts"]