From 54cc8c106d74c17b8373090f6f9a8f94d9fe4094 Mon Sep 17 00:00:00 2001 From: Alie Date: Sat, 20 Apr 2024 12:39:35 +0200 Subject: [PATCH] changed to docker compose build --- .gitignore | 1 - Dockerfile | 17 +---------------- Dockerfile.dev | 19 +++++++++++++++++++ bun.lockb | Bin 0 -> 176056 bytes compose.yaml | 8 ++------ package.json | 5 ++--- src/index.ts | 11 +---------- 7 files changed, 25 insertions(+), 36 deletions(-) create mode 100644 Dockerfile.dev create mode 100755 bun.lockb diff --git a/.gitignore b/.gitignore index f16c346..6edcfa4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ node_modules/ -bun.lockb .vscode .env .editorconfig diff --git a/Dockerfile b/Dockerfile index 54fd62a..2603d0f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,31 +1,16 @@ -# Dockerfile - -# 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 -# Generate new bun lock -FROM base as lock -RUN mkdir -p /temp/lock -COPY package.json /temp/lock -RUN cd /temp/lock && bun install - -# install dependencies into temp folder -# this will cache them and speed up future builds FROM base AS install -# install with --production (exclude devDependencies) RUN mkdir -p /temp/prod -COPY --from=lock /temp/lock/package.json /temp/lock/bun.lockb /temp/prod/ +COPY package.json bun.lockb /temp/prod/ RUN cd /temp/prod && bun install --production --frozen-lockfile -# Copy production dependencies and source code into final image FROM base AS release COPY --from=install /temp/prod/node_modules node_modules COPY --from=install /temp/prod/package.json . COPY ./src ./src -# run the app USER bun ENV NODE_ENV production EXPOSE 8080/tcp diff --git a/Dockerfile.dev b/Dockerfile.dev new file mode 100644 index 0000000..3b6f0f7 --- /dev/null +++ b/Dockerfile.dev @@ -0,0 +1,19 @@ +FROM oven/bun:1 as base +WORKDIR /usr/src/app + +FROM base AS install +RUN mkdir -p /temp/dev +COPY package.json bun.lockb /temp/dev/ +RUN cd /temp/dev && bun install --frozen-lockfile + +FROM base AS release +COPY --from=install /temp/dev/node_modules node_modules +COPY --from=install /temp/dev/package.json . +COPY ./src ./src +COPY ./tests ./tests + +USER bun +ENV NODE_ENV dev +EXPOSE 8080/tcp +ENTRYPOINT [ "/bin/bash", "-c" ] +CMD ["bun --hot run src/index.ts"] diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..ce7cc8fc718285cf2fa82e48705359d60797e9a8 GIT binary patch literal 176056 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�U6CCp4%F^OVNo@;HOrCyc=GB)E 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 OU_R+$>tFw;|NaLCNRk); literal 0 HcmV?d00001 diff --git a/compose.yaml b/compose.yaml index d8bf85f..2feb6cc 100644 --- a/compose.yaml +++ b/compose.yaml @@ -12,11 +12,9 @@ services: - mongodb_data:/data/db bot-api: - image: oven/bun:1 + build: + dockerfile: Dockerfile.dev container_name: bot-api - entrypoint: /bin/bash -c - command: ["bun --hot run src/index.ts"] - working_dir: /usr/src/app ports: - "8080:8080" depends_on: @@ -26,8 +24,6 @@ services: MONGODB_USER: "root" MONGODB_PASS: "password" JWTSECRET: "cooljwtsecret" - volumes: - - ./:/usr/src/app:ro volumes: mongodb_data: diff --git a/package.json b/package.json index 4983e60..943c0a7 100644 --- a/package.json +++ b/package.json @@ -20,9 +20,8 @@ "typescript": "^5.0.0" }, "scripts": { - "start": "bun run src/index.ts", - "dev": "docker compose down -v && docker compose up", - "test": "docker compose down -v && docker compose run bot-api 'bun test'" + "dev": "docker compose down -v && docker compose up --build", + "test": "docker compose down -v && docker compose run --build bot-api 'bun test'" }, "dependencies": { "compression": "^1.7.4", diff --git a/src/index.ts b/src/index.ts index 1fc84e5..34fbd71 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,12 +1,3 @@ import { startApp } from "./app"; -await startApp(); - -// This try carch is to prevent hot reload from making the process die due to coliding entries -try { - // Not insert test data into production - if (process.env.NODE_ENV != "production") { - const populateDatabase = require("../tests/populateDatabase"); - await populateDatabase(); - } -} catch {} +await startApp(); \ No newline at end of file