diff --git a/Dockerfile b/Dockerfile index 2dd10bf..cd1bfda 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,27 +1,39 @@ -# This file is based on the example provided in Astro's documentation: -# https://docs.astro.build/en/recipes/docker/#multi-stage-build-using-ssr -FROM node:lts AS base +######################################################### +# SudoVanilla will never use images from Docker Hub, as # +# Docker Hub is proprietary. SudoVanilla hosts slim # +# versions of Bun's Docker image on SudoVanilla Ark. # +######################################################### + +######################################################### +# Other locations to download the image is available # +# # +# Codeberg: # +# codeberg.org/korbs/bun:amd64 # +# codeberg.org/korbs/bun:arm64 # +# # +# Quay: # +# quay.io/sudovanilla/bun:amd64 # +# quay.io/sudovanilla/bun:arm64 # +# # +######################################################### + +# Base +## For AMD64 Servers: +FROM ark.sudovanilla.org/korbs/bun:amd64 as based +## For ARM64 Servers: +## FROM ark.sudovanilla.org/korbs/bun:arm64 as based + +# Copy Files WORKDIR /app - -# By copying only the package.json and package-lock.json here, we ensure that the following `-deps` steps are independent of the source code. -# Therefore, the `-deps` steps will be skipped if only the source code changes. -COPY package.json package-lock.json ./ - -FROM base AS prod-deps -RUN npm install --omit=dev - -FROM base AS build-deps -RUN npm install - -FROM build-deps AS build COPY . . -RUN npm run build -FROM base AS runtime -COPY --from=prod-deps /app/node_modules ./node_modules -COPY --from=build /app/dist ./dist +# Run in Production +ENV NODE_ENV=production -ENV HOST=0.0.0.0 -ENV PORT=4321 -EXPOSE 4321 -CMD node ./dist/server/entry.mjs \ No newline at end of file +# Build +RUN bun run build + +# Run +USER bun +EXPOSE 2014/tcp +CMD bun ./dist/server/entry.mjs \ No newline at end of file