- core.Dockerfile: python:3.12-slim + node 22 copied (same bookworm glibc), non-root, tht+pi
- frontend.Dockerfile: vite build (env-driven base/assetsDir) + nginx-unprivileged
- compose.yaml (embedded, omics_network ext, zero host ports) + docker-compose.dev.yml (standalone)
- deploy/sql: thoth_dwh_reader (ro) + thoth_vector_rw (rw) roles
- deploy/thothii.env.example + harness/workspaces/local.yaml (direct DWH+vector, 5438)
- scripts/docker-smoke.sh; .dockerignore; gitignore deploy secrets
- verified: both images build, core health {ok}, config check validates local.yaml
22 lines
826 B
Docker
22 lines
826 B
Docker
# syntax=docker/dockerfile:1.7
|
|
# thothii-frontend: build Vite (React) + nginx-unprivileged (porta 8080).
|
|
# Build args:
|
|
# VITE_BASE prefisso asset ("/" standalone, "/datamart-builder/assets/" embedded)
|
|
# VITE_BACKEND_URL base API ("http://localhost:8787" standalone, "/datamart-builder/api" embedded)
|
|
FROM node:22-bookworm AS build
|
|
WORKDIR /src
|
|
COPY frontend/package*.json ./
|
|
RUN npm ci
|
|
COPY frontend/ ./
|
|
ARG VITE_BASE=/
|
|
ARG VITE_BACKEND_URL=http://localhost:8787
|
|
ENV VITE_BASE=$VITE_BASE VITE_BACKEND_URL=$VITE_BACKEND_URL
|
|
RUN npm run build
|
|
# typecheck opzionale (non bloccante nella build dell'immagine)
|
|
RUN npx tsc -b 2>/dev/null || true
|
|
|
|
FROM nginxinc/nginx-unprivileged:1.27-alpine AS runtime
|
|
COPY --from=build /src/dist /usr/share/nginx/html
|
|
COPY docker/nginx.conf /etc/nginx/conf.d/default.conf
|
|
EXPOSE 8080
|