Highly ambitious ATProtocol AppView service and sdks
1FROM denoland/deno:2.5.1
2
3# Build arguments for Vite environment variables (embedded at build time)
4ARG VITE_API_URL
5ARG VITE_SLICE_URI
6ARG VITE_ADMIN_DIDS
7
8# Install sqlite3
9RUN apt-get update && apt-get install -y sqlite3 && rm -rf /var/lib/apt/lists/*
10
11WORKDIR /app
12
13# Copy workspace lock file and all Deno packages
14COPY --chown=deno:deno deno.lock /app/deno.lock
15COPY --chown=deno:deno deno.json /app/deno.json
16COPY --chown=deno:deno frontend/ /app/frontend/
17COPY --chown=deno:deno frontend-v2/ /app/frontend-v2/
18COPY --chown=deno:deno packages/oauth/ /app/packages/oauth/
19COPY --chown=deno:deno packages/codegen/ /app/packages/codegen/
20COPY --chown=deno:deno packages/session/ /app/packages/session/
21COPY --chown=deno:deno packages/cli/ /app/packages/cli/
22COPY --chown=deno:deno packages/lexicon/ /app/packages/lexicon/
23COPY --chown=deno:deno packages/client/ /app/packages/client/
24COPY --chown=deno:deno docs/ /app/docs/
25
26# Ensure proper permissions for node_modules directories
27RUN mkdir -p /app/frontend-v2/node_modules /app/node_modules && \
28 chown -R deno:deno /app
29
30# Switch to deno user before caching
31USER deno
32
33# Cache dependencies and build the frontend
34WORKDIR /app/frontend-v2
35RUN deno cache ./server/main.ts
36
37# Set Vite environment variables for build (these get embedded in the bundle)
38ENV VITE_API_URL=$VITE_API_URL
39ENV VITE_SLICE_URI=$VITE_SLICE_URI
40ENV VITE_ADMIN_DIDS=$VITE_ADMIN_DIDS
41
42# Build the Vite frontend
43RUN deno task build
44
45# Expose port
46EXPOSE 8080
47
48# Set NODE_ENV to production
49ENV NODE_ENV=production
50
51# Start the Deno server (serves the built frontend from dist/)
52CMD ["run", "-A", "./server/main.ts"]