Use SudoVanilla Ark as where to get image and use Bun over NodeJS for faster builds
This commit is contained in:
parent
e10ec48209
commit
5b6b9aff32
1 changed files with 35 additions and 23 deletions
58
Dockerfile
58
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
|
||||
# Build
|
||||
RUN bun run build
|
||||
|
||||
# Run
|
||||
USER bun
|
||||
EXPOSE 2014/tcp
|
||||
CMD bun ./dist/server/entry.mjs
|
Loading…
Reference in a new issue