Skip to content

Commit b44c84c

Browse files
committed
Update docker setup to include migrations
1 parent 73058b9 commit b44c84c

File tree

7 files changed

+142
-9
lines changed

7 files changed

+142
-9
lines changed

.dockerignore

+4-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
1-
.gitignore
1+
node_modules
2+
.github
3+
.vscode
4+
docs

.gitignore

+2-2
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ dist
112112
.tern-port
113113

114114
# Prisma
115-
prisma/
116-
!prisma/schema.prisma
115+
prisma/generated
116+
prisma/*.db*
117117

118118
# Generated "NFD" images
119119
src/assets/NFD/images

Dockerfile

+20-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,27 @@
1-
FROM node:16.13.1-alpine3.15
1+
# syntax=docker/dockerfile:1
2+
FROM node:lts-alpine3.17 as builder
23

3-
WORKDIR /usr/src/app
4+
WORKDIR /app
45

56
COPY package*.json ./
7+
COPY prisma ./prisma
8+
69
RUN npm install
710

811
COPY . .
9-
RUN npx prisma generate && npx prisma migrate dev --name init && npm run build
1012

11-
CMD ["npm", "run", "serve"]
13+
RUN npm run build && npx prisma generate
14+
15+
FROM node:lts-alpine3.17
16+
17+
WORKDIR /app
18+
19+
RUN addgroup -S twiggy && adduser -S twiggy -G twiggy
20+
USER twiggy
21+
22+
COPY --from=builder /app/node_modules ./node_modules
23+
COPY --from=builder /app/package*.json ./
24+
COPY --from=builder /app/build ./build
25+
COPY --from=builder /app/prisma ./prisma
26+
27+
CMD ["npm", "run", "migrate:serve"]

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"serve": "node build/main.js",
1111
"lint": "eslint -c .eslintrc.cjs src .eslintrc.cjs",
1212
"lint:fix": "eslint -c .eslintrc.cjs src .eslintrc.cjs --fix",
13-
"eloDecay": " node ./build/standalones/eloDecay.js"
13+
"migrate:serve": "prisma migrate deploy && npm run serve"
1414
},
1515
"repository": {
1616
"type": "git",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
-- CreateTable
2+
CREATE TABLE "GuildOptions" (
3+
"guildId" TEXT NOT NULL PRIMARY KEY,
4+
"gambleChance" DECIMAL NOT NULL DEFAULT 33.33,
5+
"globalDuelCD" INTEGER NOT NULL DEFAULT 60000,
6+
"lastDuel" DATETIME NOT NULL DEFAULT 0,
7+
"lastRPG" DATETIME NOT NULL DEFAULT 0
8+
);
9+
10+
-- CreateTable
11+
CREATE TABLE "User" (
12+
"id" TEXT NOT NULL PRIMARY KEY,
13+
"favColor" TEXT,
14+
"lastRandom" DATETIME NOT NULL DEFAULT 0,
15+
"lastLoss" DATETIME NOT NULL DEFAULT 0
16+
);
17+
18+
-- CreateTable
19+
CREATE TABLE "Duels" (
20+
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
21+
"userId" TEXT NOT NULL,
22+
"losses" INTEGER NOT NULL DEFAULT 0,
23+
"wins" INTEGER NOT NULL DEFAULT 0,
24+
"draws" INTEGER NOT NULL DEFAULT 0,
25+
"winStreak" INTEGER NOT NULL DEFAULT 0,
26+
"lossStreak" INTEGER NOT NULL DEFAULT 0,
27+
"winStreakMax" INTEGER NOT NULL DEFAULT 0,
28+
"lossStreakMax" INTEGER NOT NULL DEFAULT 0,
29+
CONSTRAINT "Duels_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
30+
);
31+
32+
-- CreateTable
33+
CREATE TABLE "BestMixu" (
34+
"id" TEXT NOT NULL DEFAULT '1',
35+
"owner" TEXT NOT NULL DEFAULT '',
36+
"tiles" TEXT NOT NULL DEFAULT '',
37+
"score" INTEGER NOT NULL DEFAULT 0
38+
);
39+
40+
-- CreateTable
41+
CREATE TABLE "RPGCharacter" (
42+
"id" TEXT NOT NULL PRIMARY KEY,
43+
"wins" INTEGER NOT NULL DEFAULT 0,
44+
"losses" INTEGER NOT NULL DEFAULT 0,
45+
"draws" INTEGER NOT NULL DEFAULT 0,
46+
"lastLoss" DATETIME NOT NULL DEFAULT 0,
47+
"eloRank" INTEGER NOT NULL DEFAULT 1000,
48+
"peakElo" INTEGER NOT NULL DEFAULT 1000,
49+
"floorElo" INTEGER NOT NULL DEFAULT 1000
50+
);
51+
52+
-- CreateTable
53+
CREATE TABLE "NFDItem" (
54+
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
55+
"name" TEXT NOT NULL,
56+
"code" TEXT NOT NULL,
57+
"filename" TEXT NOT NULL,
58+
"owner" TEXT NOT NULL,
59+
"discordUrl" TEXT NOT NULL DEFAULT '',
60+
"mintDate" DATETIME NOT NULL DEFAULT 0,
61+
"previousOwners" TEXT NOT NULL DEFAULT '',
62+
"coveters" TEXT NOT NULL DEFAULT '',
63+
"shunners" TEXT NOT NULL DEFAULT '',
64+
"hotness" INTEGER NOT NULL DEFAULT 0
65+
);
66+
67+
-- CreateTable
68+
CREATE TABLE "NFDEnjoyer" (
69+
"id" TEXT NOT NULL PRIMARY KEY,
70+
"mintCount" INTEGER NOT NULL DEFAULT 0,
71+
"lastMint" DATETIME NOT NULL DEFAULT 0,
72+
"lastGiftGiven" DATETIME NOT NULL DEFAULT 0,
73+
"lastSlurp" DATETIME NOT NULL DEFAULT 0,
74+
"consecutiveFails" INTEGER NOT NULL DEFAULT 4,
75+
"successfulMints" INTEGER NOT NULL DEFAULT 0,
76+
"failedMints" INTEGER NOT NULL DEFAULT 0
77+
);
78+
79+
-- CreateTable
80+
CREATE TABLE "NFDEnthusiasts" (
81+
"dinoId" INTEGER NOT NULL,
82+
"enjoyerId" TEXT NOT NULL,
83+
84+
PRIMARY KEY ("dinoId", "enjoyerId"),
85+
CONSTRAINT "NFDEnthusiasts_dinoId_fkey" FOREIGN KEY ("dinoId") REFERENCES "NFDItem" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
86+
CONSTRAINT "NFDEnthusiasts_enjoyerId_fkey" FOREIGN KEY ("enjoyerId") REFERENCES "NFDEnjoyer" ("id") ON DELETE CASCADE ON UPDATE CASCADE
87+
);
88+
89+
-- CreateIndex
90+
CREATE UNIQUE INDEX "GuildOptions_guildId_key" ON "GuildOptions"("guildId");
91+
92+
-- CreateIndex
93+
CREATE UNIQUE INDEX "User_id_key" ON "User"("id");
94+
95+
-- CreateIndex
96+
CREATE UNIQUE INDEX "BestMixu_id_key" ON "BestMixu"("id");
97+
98+
-- CreateIndex
99+
CREATE UNIQUE INDEX "RPGCharacter_id_key" ON "RPGCharacter"("id");
100+
101+
-- CreateIndex
102+
CREATE UNIQUE INDEX "NFDItem_name_key" ON "NFDItem"("name");
103+
104+
-- CreateIndex
105+
CREATE UNIQUE INDEX "NFDItem_code_key" ON "NFDItem"("code");
106+
107+
-- CreateIndex
108+
CREATE UNIQUE INDEX "NFDItem_filename_key" ON "NFDItem"("filename");
109+
110+
-- CreateIndex
111+
CREATE UNIQUE INDEX "NFDEnjoyer_id_key" ON "NFDEnjoyer"("id");

prisma/migrations/migration_lock.toml

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Please do not edit this file manually
2+
# It should be added in your version-control system (i.e. Git)
3+
provider = "sqlite"

prisma/schema.prisma

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ generator client {
99

1010
datasource db {
1111
provider = "sqlite"
12-
url = "file:./dev.db"
12+
url = "file:./main.db"
1313
}
1414

1515
model GuildOptions {

0 commit comments

Comments
 (0)