research-notes/Dockerfile
jordan ec0b89206f
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
feat: add audio playback and enhanced note UI with sidebar navigation
- Add AudioSection component with media player and waveform visualization
- Add NoteContent component with inline link support and syntax highlighting
- Add NoteSidebar with collapsible sections for navigation
- Add SidebarContext for managing sidebar state
- Update note page layout to use new component architecture
- Add assets utility for GCS audio/video URL generation
- Update content library with audio/skill/prompt type support
- Add vision.md with editorial guidelines
- Update .gitignore with additional security patterns
- Add upload-asset.sh script for GCS asset management

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 11:08:25 -07:00

47 lines
1.1 KiB
Docker

# Build stage
FROM node:20-alpine AS builder
WORKDIR /app
# Asset URL for GCS storage
ARG NEXT_PUBLIC_ASSET_BASE_URL=https://storage.googleapis.com/orchard9-assets/research-notes
ENV NEXT_PUBLIC_ASSET_BASE_URL=$NEXT_PUBLIC_ASSET_BASE_URL
# Install pnpm
RUN corepack enable && corepack prepare pnpm@latest --activate
# Copy package files
COPY blog/package.json blog/pnpm-lock.yaml ./
# Install dependencies
RUN pnpm install --frozen-lockfile
# Copy source
COPY blog/ .
# Build
RUN pnpm build
# Runtime stage
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
ENV PORT=3000
# Don't run as root
RUN addgroup --system --gid 1001 nodejs && \
adduser --system --uid 1001 nextjs
# Copy standalone build
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
COPY --from=builder --chown=nextjs:nodejs /app/public ./public
# Content is read at build time for SSG, but copy for any runtime needs
COPY --from=builder --chown=nextjs:nodejs /app/content ./content
USER nextjs
EXPOSE 3000
CMD ["node", "server.js"]