From 7454aa6569574409ca44b7a5fa50b48b7d103fd2 Mon Sep 17 00:00:00 2001 From: "Ricardo (XenGi) Band" Date: Wed, 18 Oct 2023 15:39:37 +0200 Subject: [PATCH] add docker build --- .dockerignore | 11 +++++++++++ Dockerfile | 40 ++++++++++++++++++++++++++++++++++++++++ bun.lockb | Bin 1677 -> 2743 bytes package.json | 7 ++++++- 4 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..c5fb1ef --- /dev/null +++ b/.dockerignore @@ -0,0 +1,11 @@ +node_modules +Dockerfile +.dockerignore +.git +.gitignore +README.md +LICENSE +.editorconfig +.idea +coverage* + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7693d73 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,40 @@ +# use the official Bun image +# see all versions at https://hub.docker.com/r/oven/bun/tags +FROM docker.io/oven/bun:1 as base +WORKDIR /usr/src/app + +# install dependencies into temp directory +# this will cache them and speed up future builds +FROM base AS install +RUN mkdir -p /temp/dev +COPY package.json bun.lockb /temp/dev/ +RUN cd /temp/dev && bun install --frozen-lockfile + +# install with --production (exclude devDependencies) +RUN mkdir -p /temp/prod +COPY package.json bun.lockb /temp/prod/ +RUN cd /temp/prod && bun install --frozen-lockfile --production + +# copy node_modules from temp directory +# then copy all (non-ignored) project files into the image +FROM install AS prerelease +COPY --from=install /temp/dev/node_modules node_modules +COPY . . + +# [optional] tests & build +ENV NODE_ENV=production +RUN bun test +RUN bun run build + +# copy production dependencies and source code into final image +FROM base AS release +COPY --from=install /temp/prod/node_modules node_modules +COPY --from=prerelease /usr/src/app/index.ts . +COPY --from=prerelease /usr/src/app/package.json . + +# run the app +USER bun +EXPOSE 8000/tcp +EXPOSE 8080/tcp +ENTRYPOINT [ "bun", "run", "index.ts" ] + diff --git a/bun.lockb b/bun.lockb index 866b4804cd0a78d684ee3a6d2da87ab388b62ad2..0b96ba4ffbeabf03d5d2803c8bf63807d2fbe605 100755 GIT binary patch delta 968 zcmeC>-7Y#oPcv>$%n2q1sTnNZC(l+df9LsK$^VV@D}(6M$LEG7c6YR?b1{Gc+r)7B zs5~|>n}LC$I596XnSp_!C^a#;gn@yDC5d#AQCj&zRNEe6(spkUmC(E++ zT~n5r@chO-$q7fMFkLTfnC@t#{bEHI|Fvsu1rry~uFi0&3gVeF$Qa^bnV~NB6B4xvC-}J9YvtC^kJ$<`<{`2L`jG6vv zGAd2M#;Nn&oD#Ro`yHI^GwaGf$9Xd^epAeByrm`i+tP4b)~;s%c*)7WOcM3ewKv*i z{g3>SJ@w@_j{R4PN@cE_YiTg4vDmzu*mvVe{3j>n*hzi+YK89Yi!qgBHuC1X|2j5A zvCrg#ccH5m*Ilp+|MCB0g!mHV0}y6$y%bUx&T{vtv6ixy6F1XtzgD~VAtg| z$|rtc;e*9$a!#gRR`JA*T9Yp@EuSpFRy*;47}o}9VmQJ!xslmM>fe6|0J#Yi+8?0O zEbNo-F>8r2K_dqg&<5-vMGOosASop|kZO=HC>~(SDxgY!u}}75(VASqViEyMYVafk zQVTW+=1f?kVq%Ol)HBpGU|@hHM_4jrVw}Xlz#zcD(BQ!V*2>VqF}aahWbz>vy~*!b zjHKilA?diq!t@Md1>e6NP-XI5ldV`oRKRY~*VPBpx`q~dMtTN%CFxZ;`T51Ex~X|( znQ4`icd|;`Aq(j1>LYV?4fRYQy5fxW4D<{XYHAeXKq3ZN#kwW=*{ONOAS2}AJbhh# RI9nI25M(7t&E!7T{{T<84VeG{ delta 311 zcmdlk+RHmZPjmgMC39oj2dBE6kHC*lZL*3K