FROM denoland/deno:2.5.1 # Build arguments for Vite environment variables (embedded at build time) ARG VITE_API_URL ARG VITE_SLICE_URI ARG VITE_ADMIN_DIDS # Install sqlite3 RUN apt-get update && apt-get install -y sqlite3 && rm -rf /var/lib/apt/lists/* WORKDIR /app # Copy workspace lock file and all Deno packages COPY --chown=deno:deno deno.lock /app/deno.lock COPY --chown=deno:deno deno.json /app/deno.json COPY --chown=deno:deno frontend/ /app/frontend/ COPY --chown=deno:deno frontend-v2/ /app/frontend-v2/ COPY --chown=deno:deno packages/oauth/ /app/packages/oauth/ COPY --chown=deno:deno packages/codegen/ /app/packages/codegen/ COPY --chown=deno:deno packages/session/ /app/packages/session/ COPY --chown=deno:deno packages/cli/ /app/packages/cli/ COPY --chown=deno:deno packages/lexicon/ /app/packages/lexicon/ COPY --chown=deno:deno packages/client/ /app/packages/client/ COPY --chown=deno:deno docs/ /app/docs/ # Ensure proper permissions for node_modules directories RUN mkdir -p /app/frontend-v2/node_modules /app/node_modules && \ chown -R deno:deno /app # Switch to deno user before caching USER deno # Cache dependencies and build the frontend WORKDIR /app/frontend-v2 RUN deno cache ./server/main.ts # Set Vite environment variables for build (these get embedded in the bundle) ENV VITE_API_URL=$VITE_API_URL ENV VITE_SLICE_URI=$VITE_SLICE_URI ENV VITE_ADMIN_DIDS=$VITE_ADMIN_DIDS # Build the Vite frontend RUN deno task build # Expose port EXPOSE 8080 # Set NODE_ENV to production ENV NODE_ENV=production # Start the Deno server (serves the built frontend from dist/) CMD ["run", "-A", "./server/main.ts"]