34 MDX pages covering all 57 functions across 7 domains: satellites (SGP4/SDP4), planets (VSOP87), Moon (ELP2000-82B), 19 planetary moons (L1.2/TASS17/GUST86/MarsSat), stars, comets, Jupiter radio bursts, and Lambert transfers. Site structure: - Getting Started: overview, installation, 5-query quick start - Guides: 8 domain-specific walkthroughs with workflow translation - Workflow Translation: side-by-side comparisons with Skyfield, JPL Horizons, GMAT, Radio Jupiter Pro, plus SQL patterns - Reference: all types, functions, operators, body IDs, constants - Architecture: Hamilton's principles, constant chain of custody, observation pipeline, theory-to-code mapping, thread safety - Performance: verified benchmarks with reproduction methodology Stack: Astro 5.17 + Starlight 0.37.6, KaTeX math, Mermaid diagrams, Pagefind search, Caddy production Docker image.
62 lines
1.5 KiB
Docker
62 lines
1.5 KiB
Docker
ARG NODE_VERSION=22
|
|
|
|
# ── Stage 1: Build ──────────────────────────────────────────────
|
|
FROM node:${NODE_VERSION}-slim AS build
|
|
|
|
WORKDIR /app
|
|
|
|
# Install dependencies first (cache layer)
|
|
COPY package.json package-lock.json ./
|
|
RUN --mount=type=cache,target=/root/.npm \
|
|
npm ci
|
|
|
|
# Copy source and build
|
|
COPY . .
|
|
ENV ASTRO_TELEMETRY_DISABLED=1
|
|
RUN npm run build
|
|
|
|
# ── Stage 2: Production ────────────────────────────────────────
|
|
FROM caddy:2-alpine AS production
|
|
|
|
COPY --from=build /app/dist /srv
|
|
COPY <<'CADDYFILE' /etc/caddy/Caddyfile
|
|
:3000 {
|
|
root * /srv
|
|
file_server
|
|
try_files {path} {path}/ /404.html
|
|
encode gzip
|
|
|
|
header {
|
|
X-Content-Type-Options nosniff
|
|
X-Frame-Options DENY
|
|
Referrer-Policy strict-origin-when-cross-origin
|
|
}
|
|
|
|
header /docs/_astro/* {
|
|
Cache-Control "public, max-age=31536000, immutable"
|
|
}
|
|
}
|
|
CADDYFILE
|
|
|
|
EXPOSE 3000
|
|
|
|
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s \
|
|
CMD wget -qO- http://127.0.0.1:3000/ || exit 1
|
|
|
|
# ── Stage 3: Development ───────────────────────────────────────
|
|
FROM node:${NODE_VERSION}-slim AS development
|
|
|
|
WORKDIR /app
|
|
|
|
COPY package.json package-lock.json ./
|
|
RUN --mount=type=cache,target=/root/.npm \
|
|
npm ci
|
|
|
|
COPY . .
|
|
|
|
ENV ASTRO_TELEMETRY_DISABLED=1
|
|
|
|
EXPOSE 3000
|
|
|
|
CMD ["npm", "run", "dev"]
|