diff --git a/apps/server/Dockerfile b/apps/server/Dockerfile index f266b64..fb1e3b2 100644 --- a/apps/server/Dockerfile +++ b/apps/server/Dockerfile @@ -1,36 +1,30 @@ -FROM oven/bun:1 AS base +# FIXME: remapping of ts aliases does not work with bun + nestjs +FROM node:20-alpine as base WORKDIR /app -COPY package.json . -COPY apps/server/package.json apps/server/ +RUN apk update &&\ + apk upgrade &&\ + apk add --no-cache bash dumb-init &&\ + apk cache clean FROM base as install -RUN mkdir -p /temp/dev && mkdir /temp/prod - -COPY *.json /temp/dev/ -COPY apps/server/*.json /temp/dev/apps/server/ - -COPY *.json /temp/prod/ -COPY apps/server/*.json /temp/prod/apps/server/ - -RUN cd /temp/dev &&\ - bun i &&\ - cd /temp/prod &&\ - bun i --production +COPY package.json yarn.lock ./ +COPY apps/server/package.json apps/server/ +RUN yarn install --ignore-scripts --frozen-lockfile --production=false -FROM base as prerelease -COPY --from=install /temp/dev/node_modules node_modules -COPY --from=install /temp/dev/apps/server/node_modules apps/server/node_modules +FROM install as prerelease COPY tsconfig.json . -COPY apps/server/tsconfig.* apps/server/ +COPY apps/server/tsconfig* apps/server/nest-cli.json apps/server/ COPY apps/server/src apps/server/src - -ENV NODE_ENV=production -RUN bun --filter server build +RUN yarn workspace server build &&\ + find -type d -name node_modules -exec rm -fr {} + &&\ + yarn install --frozen-lockfile --production=true FROM base as release -COPY --from=install /temp/prod/node_modules node_modules -COPY --from=prerelease /app/apps/server/dist apps/server/dist - -USER bun +COPY --from=prerelease /app/apps/server/node_modules node_modules +COPY --from=prerelease /app/apps/server/dist dist +ENV NODE_ENV production +USER node +# TODO: make this configurable/overridable EXPOSE 3001 -ENTRYPOINT ["bun", "--filter", "server", "start"] +ENTRYPOINT ["dumb-init", "--"] +CMD ["node", "dist"] diff --git a/apps/server/nest-cli.json b/apps/server/nest-cli.json index f9aa683..d77c397 100644 --- a/apps/server/nest-cli.json +++ b/apps/server/nest-cli.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/nest-cli", "collection": "@nestjs/schematics", - "sourceRoot": "src", + "entryFile": "index", "compilerOptions": { "deleteOutDir": true } diff --git a/apps/server/package.json b/apps/server/package.json index 830b85b..c98feb1 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -40,6 +40,7 @@ "ts-loader": "^9.4.3", "ts-node": "^10.9.1", "tsconfig-paths": "^4.2.0", - "typescript": "^5.1.3" + "typescript": "^5.1.3", + "webpack": "^5.0.0" } } diff --git a/apps/server/src/main.ts b/apps/server/src/index.ts similarity index 100% rename from apps/server/src/main.ts rename to apps/server/src/index.ts diff --git a/bun.lockb b/bun.lockb index a0a1dec..85a1edd 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/package.json b/package.json index 15c385f..d92bc8d 100644 --- a/package.json +++ b/package.json @@ -1,4 +1,5 @@ { + "private": true, "devDependencies": { "@biomejs/biome": "^1.8.3", "barrelsby": "^2.8.1", diff --git a/yarn.lock b/yarn.lock index 600a7b5..e1a6a5e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4704,6 +4704,7 @@ serve-static@1.16.2: ts-node "^10.9.1" tsconfig-paths "^4.2.0" typescript "^5.1.3" + webpack "^5.0.0" dependencies: "@nestjs/common" "^10.0.0" "@nestjs/core" "^10.0.0"