Deno Deployment
Detection
Project is Deno if deno.json or deno.jsonc exists in the root.
Versions
.deno-versionfile ormise.toml/.tool-versions- Defaults to 2
Build
Build Process
- Install Deno
- Cache dependencies:
deno cache - Start command derived from project config
Start Command
main.ts,main.js,main.mjs, ormain.mtsin project root- If none found, use first
.ts,.js,.mjs, or.mtsfile - Run with:
deno run --allow-all <entry>
deno.json / deno.jsonc may specify tasks or main; prefer those when present.
Install Stage Optimization
Copy in order:
deno.json,deno.jsonclock.json(if present)*.ts,*.js,*.mjs,*.mts(or full source)
Dockerfile Patterns
Basic Deno App
FROM denoland/deno:2
WORKDIR /app
COPY deno.json deno.jsonc ./
COPY . .
RUN deno cache main.ts
EXPOSE 3000
CMD ["deno", "run", "--allow-all", "main.ts"]
With lock file
FROM denoland/deno:2
WORKDIR /app
COPY deno.json deno.jsonc lock.json ./
COPY src/ ./src/
RUN deno cache src/main.ts
COPY . .
EXPOSE 3000
CMD ["deno", "run", "--allow-all", "src/main.ts"]
deno.json tasks
FROM denoland/deno:2
WORKDIR /app
COPY deno.json deno.jsonc ./
COPY . .
RUN deno cache main.ts
EXPOSE 3000
CMD ["deno", "task", "start"]