Dockerfile 752 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. ARG DENO_IMAGE=denoland/deno:alpine-1.34.2
  2. ARG DENO_DIR=/deno_dir
  3. # Build stage
  4. FROM ${DENO_IMAGE} as builder
  5. WORKDIR /app
  6. # Set DENO_DIR to a known location
  7. ENV DENO_DIR=${DENO_DIR}
  8. # Cache dependencies
  9. COPY deno.jsonc deno.lock ./
  10. COPY src/deps.ts ./src/
  11. RUN deno cache ./src/deps.ts
  12. # Build application
  13. COPY . .
  14. RUN deno cache ./src/main.ts
  15. # Runtime stage
  16. FROM ${DENO_IMAGE}
  17. EXPOSE 1993
  18. WORKDIR /app
  19. # Set DENO_DIR to the same location as in the build stage
  20. ENV DENO_DIR=${DENO_DIR}
  21. # Copy from build stage
  22. COPY --from=builder /app .
  23. COPY --from=builder ${DENO_DIR} ${DENO_DIR}
  24. # Change ownership to deno user
  25. RUN chown -R deno:deno /app ${DENO_DIR}
  26. USER deno
  27. CMD ["run", "--allow-net", "--allow-read", "--allow-env", "./src/main.ts"]