From a4810fc7bad831e8ca8ff18661a5696fdc95c21c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Kr=C5=A1ka?= Date: Sat, 21 Sep 2024 00:53:18 +0200 Subject: [PATCH] docker --- .dockerignore | 6 ++++++ .gitignore | 4 +++- Dockerfile | 17 ++++++++------- README.md | 6 +++++- bun.lockb | Bin 71764 -> 71764 bytes docker-compose.yml | 2 +- drizzle.config.ts | 6 ++---- package.json | 47 ++++++++++++++++++++--------------------- src/database/schema.ts | 2 +- src/index.ts | 1 + 10 files changed, 51 insertions(+), 40 deletions(-) diff --git a/.dockerignore b/.dockerignore index bb83dc5..c3b7f2c 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1 +1,7 @@ +.git .mysql +dist +node_modules +Dockerfile +docker-compose.yml +sous-podzim2024-app.tar.gz diff --git a/.gitignore b/.gitignore index d6da680..63fceff 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ -node_modules .mysql +dist +node_modules +sous-podzim2024-app.tar.gz diff --git a/Dockerfile b/Dockerfile index 4099fa5..3bb2ad7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,16 +1,17 @@ -FROM oven/bun:1 AS base +FROM oven/bun:1 AS builder WORKDIR /usr/src/app COPY package.json bun.lockb . -#RUN bun install --frozen-lockfile --production -RUN bun install --frozen-lockfile --development +RUN bun install --frozen-lockfile --production COPY . . +RUN bun run build -#ENV NODE_ENV=production -ENV NODE_ENV=development +FROM node:22-alpine AS base +WORKDIR /usr/src/app +COPY --from=builder /usr/src/app . + +ENV NODE_ENV=production -USER bun EXPOSE 8080/tcp -#ENTRYPOINT [ "bun", "run", "src/index.ts" ] -ENTRYPOINT [ "bun", "run", "dev" ] +ENTRYPOINT [ "node", "./dist/index.js" ] diff --git a/README.md b/README.md index afc0144..fb48a9a 100644 --- a/README.md +++ b/README.md @@ -12,4 +12,8 @@ To run: bun run index.ts ``` -This project was created using `bun init` in bun v1.1.12. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime. +# transfer to server +build image with `docker compose build` +save image to file on client: `docker save sous-podzim2024-app:latest | gzip > sous-podzim2024-app.tar.gz` +copy zip to server +load image on server: `docker load < sous-podzim2024-app.tar.gz` diff --git a/bun.lockb b/bun.lockb index 84c9b1c62c782b93ea491faf4e9740cc83a7a114..d9f0af5159cec529b0443da8f1f02e5bbc0bc0f2 100755 GIT binary patch delta 8542 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 Y>#l(;kj2x@yJ4-XZhjX>*>&6g16`tnzyJUM delta 8487 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 diff --git a/docker-compose.yml b/docker-compose.yml index aa72a3c..6b3ab02 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,6 @@ services: app: - image: labyrint + image: sous-podzim2024-app build: context: . restart: on-failure:3 diff --git a/drizzle.config.ts b/drizzle.config.ts index 8ed41bd..f4825bf 100644 --- a/drizzle.config.ts +++ b/drizzle.config.ts @@ -1,12 +1,10 @@ import { defineConfig } from "drizzle-kit"; export const dbCredentials = { - //host: "127.0.0.1", host: "db", - //port: 8081, port: 3306, - user: "root", - password: "password", + user: "fykosak", + password: "zxvFcEztX0vzDhB", database: "sous-podzim2024-app" }; diff --git a/package.json b/package.json index 801a516..cac777a 100644 --- a/package.json +++ b/package.json @@ -1,26 +1,25 @@ { - "name": "sous-podzim2024-app", - "module": "index.ts", - "type": "module", - "devDependencies": { - "@types/bun": "latest" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "dependencies": { - "@types/ejs": "^3.1.5", - "@types/express": "^4.17.21", - "@types/multer": "^1.4.12", - "drizzle-kit": "^0.24.2", - "drizzle-orm": "^0.33.0", - "ejs": "^3.1.10", - "express": "^4.19.2", - "multer": "^1.4.5-lts.1", - "mysql2": "^3.11.0" - }, - "scripts": { - "dev": "bun --watch src/index.ts", - "push": "bun drizzle-kit push" - } + "name": "sous-podzim2024-app", + "module": "index.ts", + "type": "module", + "devDependencies": { + "@types/bun": "latest" + }, + "dependencies": { + "@types/ejs": "^3.1.5", + "@types/express": "^4.17.21", + "@types/multer": "^1.4.12", + "drizzle-kit": "^0.24.2", + "drizzle-orm": "^0.33.0", + "ejs": "^3.1.10", + "express": "^4.19.2", + "typescript": "^5.6.2", + "multer": "^1.4.5-lts.1", + "mysql2": "^3.11.0" + }, + "scripts": { + "dev": "bun --watch src/index.ts", + "push": "bun drizzle-kit push", + "build": "bun build ./src/index.ts --outdir ./dist --target node" + } } diff --git a/src/database/schema.ts b/src/database/schema.ts index 783bc04..c32a542 100644 --- a/src/database/schema.ts +++ b/src/database/schema.ts @@ -15,7 +15,7 @@ export const personRelations = relations(personTable, ({ many }) => ({ export const pointsTable = mysqlTable('points', { pointsId: int('pointsId').primaryKey().autoincrement(), personId: int('personId').notNull().references(() => personTable.personId), - points: int('points'), + points: int('points').notNull(), }); export const pointsRelations = relations(pointsTable, ({ one }) => ({ diff --git a/src/index.ts b/src/index.ts index 25e0753..8b136ad 100644 --- a/src/index.ts +++ b/src/index.ts @@ -88,6 +88,7 @@ app.get("/gamble/:id", async (req, res) => { if (isDetailAvailable(person.gambleTime)) { res.redirect('/person/' + id); + return; } if (!isGambleAvailable(person.gambleTime)) {