Use lockfile-driven installs in Docker paths and add high-severity npm audit checks in CI while documenting local CORS policy for compose-based development. Made-with: Cursor
30 lines
1.3 KiB
Docker
30 lines
1.3 KiB
Docker
FROM node:20-alpine AS api-deps
|
|
WORKDIR /app/solver-api
|
|
COPY solver-api/package.json solver-api/package-lock.json* ./
|
|
RUN npm ci
|
|
|
|
FROM node:20-alpine AS gui-deps
|
|
WORKDIR /app/gui-ts
|
|
COPY gui-ts/package.json gui-ts/package-lock.json* ./
|
|
RUN npm ci
|
|
|
|
FROM alpine:3.20 AS solver-build
|
|
RUN apk add --no-cache build-base
|
|
WORKDIR /app
|
|
COPY solver-c ./solver-c
|
|
RUN SRCS="./solver-c/src/solver_common.c ./solver-c/src/json_stdin.c ./solver-c/src/trajectory.c ./solver-c/src/solver_diagnostic.c ./solver-c/src/solver.c ./solver-c/src/solver_fea.c ./solver-c/src/solver_fourier.c" \
|
|
&& gcc -std=c99 -I./solver-c/include $$SRCS ./solver-c/src/main.c -lm -o ./solver-c/solver_main \
|
|
&& gcc -std=c99 -I./solver-c/include $$SRCS ./solver-c/src/main_fea.c -lm -o ./solver-c/solver_fea_main \
|
|
&& gcc -std=c99 -I./solver-c/include $$SRCS ./solver-c/tests/test_solver.c -lm -o ./solver-c/test_solver \
|
|
&& ./solver-c/test_solver
|
|
|
|
FROM node:20-alpine AS ci
|
|
WORKDIR /app
|
|
COPY --from=solver-build /app/solver-c ./solver-c
|
|
COPY --from=api-deps /app/solver-api/node_modules ./solver-api/node_modules
|
|
COPY --from=gui-deps /app/gui-ts/node_modules ./gui-ts/node_modules
|
|
COPY solver-api ./solver-api
|
|
COPY gui-ts ./gui-ts
|
|
COPY data ./data
|
|
CMD ["sh", "-c", "cd /app/solver-api && npm test && cd /app/gui-ts && npm test"]
|