diff --git a/.gitignore b/.gitignore index 1707c21..c3742da 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ .idea/ -Dockerfile node_modules/ bun.lock package-lock.json diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c9c4cbc --- /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 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.lock /temp/dev/ +RUN cd /temp/dev && bun install --frozen-lockfile + +# install with --production (exclude devDependencies) +RUN mkdir -p /temp/prod +COPY package.json bun.lock /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 base AS prerelease +COPY --from=install /temp/dev/node_modules node_modules +COPY ./src/ . +COPY ./package.json ./package.json + +# copy production dependencies and source code into final image +FROM base AS release +ENV DATABASE_URL=postgres://admin:iiyama12@192.168.1.166:5432/bgApp +ENV JWT_SECRET_KEY=MySecret +COPY --from=install /temp/prod/node_modules node_modules +COPY --from=prerelease /usr/src/app/index.ts . +COPY --from=prerelease /usr/src/app/utilities/ ./utilities +COPY --from=prerelease /usr/src/app/endpoints/ ./endpoints +COPY --from=prerelease /usr/src/app/orm/ ./orm +COPY --from=prerelease /usr/src/app/package.json . +RUN ls -la + +# run the app +USER bun +EXPOSE 3000/tcp +ENTRYPOINT [ "bun", "run", "index.ts" ] \ No newline at end of file diff --git a/package.json b/package.json index 67a27fe..bdca347 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "src/index.ts", "scripts": { "test": "bun --env-file=.env.test test ./src/tests/", - "build": "bun build src/index.ts --target bun", + "build": "docker build --pull --progress=plain --no-cache -t bgapp .", "dev": "bun --env-file=.env.dev run src/index.ts" }, "private": true,