| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- ARG DENO_IMAGE=denoland/deno:alpine-1.34.2
- ARG DENO_DIR=/deno_dir
- # Build stage
- FROM ${DENO_IMAGE} as builder
- WORKDIR /app
- # Set DENO_DIR to a known location
- ENV DENO_DIR=${DENO_DIR}
- # Cache dependencies
- COPY deno.jsonc deno.lock ./
- COPY src/deps.ts ./src/
- RUN deno cache ./src/deps.ts
- # Build application
- COPY src ./src
- RUN deno cache ./src/main.ts
- # Runtime stage
- FROM ${DENO_IMAGE}
- EXPOSE 1993
- WORKDIR /app
- # Set DENO_DIR to the same location as in the build stage
- ENV DENO_DIR=${DENO_DIR}
- # Copy from build stage
- COPY --from=builder /app .
- COPY --from=builder ${DENO_DIR} ${DENO_DIR}
- # Change ownership to deno user
- RUN chown -R deno:deno /app ${DENO_DIR}
- USER deno
- CMD ["run", "--allow-net", "--allow-read", "--allow-env", "./src/main.ts"]
|