Use SudoVanilla Ark as where to get image and use Bun over NodeJS for faster builds

This commit is contained in:
Korbs 2024-06-06 17:49:13 -04:00
parent e10ec48209
commit 5b6b9aff32

View file

@ -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
# Build
RUN bun run build
# Run
USER bun
EXPOSE 2014/tcp
CMD bun ./dist/server/entry.mjs