fix: seed에서 argon2 런타임 의존성 제거 (Docker Alpine 호환)

This commit is contained in:
Johngreen
2026-03-09 00:26:04 +09:00
parent 7ce2bd23f8
commit 8ffad799e9
3 changed files with 10 additions and 6 deletions
-1
View File
@@ -30,7 +30,6 @@
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^22.10.2", "@types/node": "^22.10.2",
"argon2": "^0.44.0",
"prisma": "^6.1.0", "prisma": "^6.1.0",
"tsup": "^8.3.5", "tsup": "^8.3.5",
"tsx": "^4.19.0", "tsx": "^4.19.0",
+4 -2
View File
@@ -2,7 +2,9 @@ import { PrismaClient } from '@prisma/client';
import { readFileSync } from 'node:fs'; import { readFileSync } from 'node:fs';
import { resolve, dirname } from 'node:path'; import { resolve, dirname } from 'node:path';
import { fileURLToPath } from 'node:url'; import { fileURLToPath } from 'node:url';
import argon2 from 'argon2'; // Pre-generated argon2 hash for admin password (avoids native compilation dependency in Docker Alpine)
const ADMIN_PASSWORD_HASH =
'$argon2id$v=19$m=65536,t=3,p=4$MMkWVs1hKzKPp5P93KLITw$fhiUqTZMkR0ucwQNteHskMn9UIrD/7aUXZPUdzWYloE';
const __dirname = dirname(fileURLToPath(import.meta.url)); const __dirname = dirname(fileURLToPath(import.meta.url));
@@ -152,7 +154,7 @@ async function seedAdminUser(): Promise<void> {
return; return;
} }
const passwordHash = await argon2.hash('admin123'); const passwordHash = ADMIN_PASSWORD_HASH;
const user = await prisma.user.create({ const user = await prisma.user.create({
data: { data: {
+6 -3
View File
@@ -202,9 +202,6 @@ importers:
'@types/node': '@types/node':
specifier: ^22.10.2 specifier: ^22.10.2
version: 22.19.15 version: 22.19.15
argon2:
specifier: ^0.44.0
version: 0.44.0
prisma: prisma:
specifier: ^6.1.0 specifier: ^6.1.0
version: 6.19.2(typescript@5.9.3) version: 6.19.2(typescript@5.9.3)
@@ -394,6 +391,7 @@ packages:
/@epic-web/invariant@1.0.0: /@epic-web/invariant@1.0.0:
resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==}
dev: false
/@esbuild/aix-ppc64@0.21.5: /@esbuild/aix-ppc64@0.21.5:
resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
@@ -1284,6 +1282,7 @@ packages:
/@phc/format@1.0.0: /@phc/format@1.0.0:
resolution: {integrity: sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ==} resolution: {integrity: sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
dev: false
/@prisma/client@6.19.2(prisma@6.19.2)(typescript@5.9.3): /@prisma/client@6.19.2(prisma@6.19.2)(typescript@5.9.3):
resolution: {integrity: sha512-gR2EMvfK/aTxsuooaDA32D8v+us/8AAet+C3J1cc04SW35FPdZYgLF+iN4NDLUgAaUGTKdAB0CYenu1TAgGdMg==} resolution: {integrity: sha512-gR2EMvfK/aTxsuooaDA32D8v+us/8AAet+C3J1cc04SW35FPdZYgLF+iN4NDLUgAaUGTKdAB0CYenu1TAgGdMg==}
@@ -2140,6 +2139,7 @@ packages:
cross-env: 10.1.0 cross-env: 10.1.0
node-addon-api: 8.6.0 node-addon-api: 8.6.0
node-gyp-build: 4.8.4 node-gyp-build: 4.8.4
dev: false
/argparse@2.0.1: /argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
@@ -2452,6 +2452,7 @@ packages:
dependencies: dependencies:
'@epic-web/invariant': 1.0.0 '@epic-web/invariant': 1.0.0
cross-spawn: 7.0.6 cross-spawn: 7.0.6
dev: false
/cross-spawn@7.0.6: /cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
@@ -4053,6 +4054,7 @@ packages:
/node-addon-api@8.6.0: /node-addon-api@8.6.0:
resolution: {integrity: sha512-gBVjCaqDlRUk0EwoPNKzIr9KkS9041G/q31IBShPs1Xz6UTA+EXdZADbzqAJQrpDRq71CIMnOP5VMut3SL0z5Q==} resolution: {integrity: sha512-gBVjCaqDlRUk0EwoPNKzIr9KkS9041G/q31IBShPs1Xz6UTA+EXdZADbzqAJQrpDRq71CIMnOP5VMut3SL0z5Q==}
engines: {node: ^18 || ^20 || >= 21} engines: {node: ^18 || ^20 || >= 21}
dev: false
/node-exports-info@1.6.0: /node-exports-info@1.6.0:
resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==} resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==}
@@ -4070,6 +4072,7 @@ packages:
/node-gyp-build@4.8.4: /node-gyp-build@4.8.4:
resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
hasBin: true hasBin: true
dev: false
/nypm@0.6.5: /nypm@0.6.5:
resolution: {integrity: sha512-K6AJy1GMVyfyMXRVB88700BJqNUkByijGJM8kEHpLdcAt+vSQAVfkWWHYzuRXHSY6xA2sNc5RjTj0p9rE2izVQ==} resolution: {integrity: sha512-K6AJy1GMVyfyMXRVB88700BJqNUkByijGJM8kEHpLdcAt+vSQAVfkWWHYzuRXHSY6xA2sNc5RjTj0p9rE2izVQ==}